应用Python Numpy ufunc时如何广播索引?

时间:2019-11-12 19:17:45

标签: numpy-broadcasting numpy-indexing

应用Python Numpy ufunc时如何广播索引?

我想摆脱以下代码中的for循环:

import numpy as np
a = np.array([3,4,5,4,3,1,17,4,6,8,99])
indices = np.array([1,3,10])

maximum_up_to_index = np.ones_like(indices)
for i, index in enumerate(indices):
    maximum_up_to_index[i] = np.amax(a[0:index])
print(maximum_up_to_index)

>> [ 3  5 17]

我不知道该怎么做。广播无效。

拥有一种可以同时应用于更高尺寸案例的解决方案真的很酷,例如:

import numpy as np
a = np.array([[1,2,4,6,3,5,2,1],
              [4,3,1,7,4,4,5,6]
             ])
indices = np.array([2,4,6])

maximum_up_to_index = np.ones(shape=[a.shape[0], len(indices)])
for i, index in enumerate(indices):
    maximum_up_to_index[:,i] = np.amax(a[:,0:index], axis=1)
print(maximum_up_to_index)

>>[[2. 6. 6.]
   [4. 7. 7.]]

0 个答案:

没有答案