【发布时间】:2017-10-13 18:18:09
【问题描述】:
我有代码:
a=b=np.arange(9).reshape(3,3)
c=np.zeros(3)
for x in range(3):
c[x]=np.average(b[np.where(a<x+3)])
c 的输出是
>>>array([ 1. , 1.5, 2. ])
我想使用数组(向量化)而不是 for 循环,然后我做了以下代码:
a=b=np.arange(9).reshape(3,3)
c=np.zeros(3)
i=np.arange(3)
c[i]=np.average(b[np.where(a<i[:,None,None]+3)])
但它显示 IndexError: too many indices for array
至于a<i[:,None,None]+3
正确显示
array([[[ True, True, True],
[False, False, False],
[False, False, False]],
[[ True, True, True],
[ True, False, False],
[False, False, False]],
[[ True, True, True],
[ True, True, False],
[False, False, False]]], dtype=bool)
但是当我使用b[np.where(a<i[:,None,None]+3)] 时,它再次显示 IndexError: too many indices for array。我无法得到c 的正确输出。
【问题讨论】: