所有小于当前值的数组中的值求和

时间:2019-08-27 19:49:27

标签: python numpy

希望找到一种不循环的方法来获取同一时间间隔内的所有小于当前值但也在定义的时间间隔内的值。

我要对8760行数据进行排序,并希望有一种比循环更短的方法。有了一些循环代码,执行将花费5分钟以上

x=np.array([[250,1,1],[300,.5,1],[100,2,1],[200,.75,1],[150,.25,1],[50,.5,2]])

我试图求和第一个元素(250,300,100,50),其中第二个元素小于当前值,而第三个元素等于当前值的第三个元素。

示例

[250,1,1]

我只想找到300+200+150,因为它们以1作为第三个元素,而.5.75.25的第二个元素小于1.这需要针对每一行继续

对于第二个元素[300,.5,1],它将找到一个150的值,因为这是唯一一个索引较大的值,它的第三个元素为1并且值为小于.5

编辑:固定的最小示例

1 个答案:

答案 0 :(得分:0)

可能使用布尔掩码吗?

import numpy as np

x = np.array([[250,1,1],[300,.5,1],[100,2,1],[200,.75,1],[150,.25,1],[50,.5,2]])

mask = (x[:, 1] < x[:, 0]) & (x[:, 2] == np.floor_divide(x[:, 0], 100))
np.sum(x[mask, 0])