如何使用矢量化对可被 5 整除的 numpy 数组中的每个元素求和?
How to sum every element in a numpy array divisible by 5 using vectorization?
我正在寻找一种矢量化方法,用于对可被 5 整除的 numpy 数组的所有元素求和。
例如,如果我有
test = np.array([1,5,12,15,20,22])
我想 return 40. 我知道 np.sum 方法,但是有没有办法在 X%5 == 0 条件下使用矢量化来做到这一点?
我们可以使用 boolean-indexing
到 select 这些元素的匹配项 mask
,然后简单地将它们相加,就像这样 -
test[test%5==0].sum()
分步示例 运行 -
# Input array
In [48]: test
Out[48]: array([ 1, 5, 12, 15, 20, 22])
# Mask of matches
In [49]: test%5==0
Out[49]: array([False, True, False, True, True, False], dtype=bool)
# Select matching elements off input
In [50]: test[test%5==0]
Out[50]: array([ 5, 15, 20])
# Finally sum those elements
In [51]: test[test%5==0].sum()
Out[51]: 40
我正在寻找一种矢量化方法,用于对可被 5 整除的 numpy 数组的所有元素求和。
例如,如果我有
test = np.array([1,5,12,15,20,22])
我想 return 40. 我知道 np.sum 方法,但是有没有办法在 X%5 == 0 条件下使用矢量化来做到这一点?
我们可以使用 boolean-indexing
到 select 这些元素的匹配项 mask
,然后简单地将它们相加,就像这样 -
test[test%5==0].sum()
分步示例 运行 -
# Input array
In [48]: test
Out[48]: array([ 1, 5, 12, 15, 20, 22])
# Mask of matches
In [49]: test%5==0
Out[49]: array([False, True, False, True, True, False], dtype=bool)
# Select matching elements off input
In [50]: test[test%5==0]
Out[50]: array([ 5, 15, 20])
# Finally sum those elements
In [51]: test[test%5==0].sum()
Out[51]: 40