我认为这是您正在尝试执行的操作。建议使用
np.where
例程将小于0.25的值设置为零。然后,您可以仅对数组的第一个维度求和,以获得所需的输出数组。为了示例,我减少了问题的维度。
import numpy as np
vals = np.random.random([24, 2, 3])
vals_filtered = np.where(vals < 0.25, 0.0, vals)
out = vals_filtered.sum(axis=0)
print("First sample array has the slice vals[0,:,:]:\n{}\n".format(vals[0, :, :]))
print("First sample array with vals>0.25 set to 0.0:\n{}\n".format(vals_filtered[0, :, :]))
print("Output array is the sum over the first dimension:\n{}\n".format(out))
这将返回以下输出。
First sample array has the slice vals[0, :, :]:
[[ 0.16272567 0.13695067 0.5954866 ]
[ 0.50367823 0.8519252 0.3000367 ]]
First sample array with vals>0.25 set to 0.0:
[[ 0. 0. 0.5954866 ]
[ 0.50367823 0.8519252 0.3000367 ]]
Output array is the sum over the first dimension:
[[ 11.12707813 12.04175706 11.5812803 ]
[ 13.73036272 9.3988165 12.41808745]]
这是您要寻找的计算吗?调用vals.sum(axis=0)
是一种更快的方法来执行此操作。通常最好调用numpy的内置数组例程,而不是显式使用for
循环。