我有一个 numpy 数组a
,a.shape=(17,90,144)
. 我想找到 的每一列的最大幅度cumsum(a, axis=0)
,但保留原始符号。换句话说,如果给定列a[:,j,i]
的最大值cumsum
对应于负值,我想保留减号。
代码np.amax(np.abs(a.cumsum(axis=0)))
让我知道幅度,但不保留符号。相反,使用np.argmax
会得到我需要的索引,然后我可以将其插入原始cumsum
数组。但是我找不到这样做的好方法。
以下代码有效,但很脏而且非常慢:
max_mag_signed = np.zeros((90,144))
indices = np.argmax(np.abs(a.cumsum(axis=0)), axis=0)
for j in range(90):
for i in range(144):
max_mag_signed[j,i] = a.cumsum(axis=0)[indices[j,i],j,i]
必须有一种更清洁、更快的方法来做到这一点。有任何想法吗?