应用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.]]