У меня есть код:
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: слишком много индексов для массива
Что касается 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
.