时,我有代码:数组太多的指数使用np.where
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)])
但它显示了IndexEr ROR:数组
太多的指数作为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:数组太多的索引。我无法获得c
的正确输出。
执行总和或平均值仅仅是一个例子,其实我只是想获得“B [np.where(A
@kinderchan如果我理解正确,可以使用:np.broadcast_to(b,mask.shape)[mask]? – Divakar
我试过了,它不起作用,我也用b [mask,i [:,None]],它也失败了。 –