時,我有代碼:數組太多的指數使用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]],它也失敗了。 –