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

Python 数组中小于当前值的所有值的总和,python,numpy,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]]) 我试图求第一个元素的和(250300100,50),其中第二个元素小于当前值,第三个元素等于当前值的第三个元素 范例 为了 [250,1,1] 我只想找到300+200+

正在寻找一种不循环的方法,以获得相同间隔内小于当前值但也在定义间隔内的所有值

我有8760行数据要排序,希望有一个比循环更短的方法。对于一些循环代码,执行需要5分钟以上

x=np.array([[250,1,1],[300,.5,1],[100,2,1],[200,.75,1],[150,.25,1],[50,.5,2]])
我试图求第一个元素的和
(250300100,50)
,其中第二个元素小于当前值,第三个元素等于当前值的第三个元素

范例

为了
[250,1,1]

我只想找到
300+200+150
,因为
1
的第三个元素,而
的第二个元素.5
.75
.25
都小于1。这需要在每一行中继续

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


编辑:修复了最小示例

是否可以使用布尔掩蔽

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])
将numpy导入为np
x=np.数组([[250,1,1],[300,5,1],[100,2,1],[200,75,1],[150,25,1],[50,5,2])
掩码=(x[:,1]
是否可以使用布尔掩蔽

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])
将numpy导入为np
x=np.数组([[250,1,1],[300,5,1],[100,2,1],[200,75,1],[150,25,1],[50,5,2])
掩码=(x[:,1]
只给出了
250
-如果我答对了问题,他想为每一行计算这个和,他可以使用
np.cumsum
或任何其他反映他想要的精确计算的函数。这只是一个例子,但关键的一点是,如果他能够使用掩蔽,那么他就不需要使用循环,而且速度会更快。当然,我也认为掩蔽可能是一个很好的方法-只是掩蔽会根据每行的不同而有所不同(不过,如果我答对了问题的话)。那么也许你可以展示一下这将如何避免循环?我被困在这里-newarray=np.where((a[:,2]==1)和(a[:,2]这就给出了
250
-如果我答对了问题,他想为每一行计算这个和,他可以使用
np.cumsum
或任何其他反映他想要的精确计算的函数。这只是一个例子,但关键是如果他能够使用掩蔽,那么他就不需要使用循环,而且会更快ure,我也认为掩蔽可能是一种很好的方法-只是掩蔽会根据每一行的不同而有所不同(尽管如此,如果我答对了问题的话)。因此,也许你可以展示一下这将如何避免循环?我被困在这里-newarray=np。其中((a[:,2]==1)和(a[:,2]总和是否应该排除
x[:,0]中的当前值
?你的例子我并不完全清楚;我认为它与上面给出的描述不一致。还有一个一般性的说明:也许这个问题更适合CodeReview?它不应该包括当前值。总和是否应该排除
x[:,0]中的当前值
?您的示例对我来说并不完全清楚;我认为它与上面给出的描述不一致。还有一个一般性说明:也许这个问题更适合CodeReview?它不应该包括当前值。