Я понимаю, что многие люди спрашивали об этой ошибке, но мне еще предстоит найти что-нибудь, что поможет мне.IndexError: Слишком много индексов при индексировании массива с другим массивом
Это мой код:
def nanalyze(pupil, pw_sim):
import numpy as np
temp_s = abs(pw_sim)**2 * pupil
vals_x, vals_y = np.where(pupil > 0)
mask = pupil[vals_x[0]:vals_x[len(vals_x)-1], vals_y[0]:vals_y[len(vals_y)-1]]
s_i = (np.mean(temp_s[tuple(mask)]**2)/(np.mean(temp_s[tuple(mask)])**2)) - 1
return s_i
предпоследнем кого линии, s_i = (np.mean(temp_s[tuple(mask)]**2)/(np.mean(temp_s[tuple(mask)])**2)) - 1
, является то, что возвращает ошибку индекса: слишком много индексов.
pupil
и pw_sim
- каждый из массивов формы (1024,1024)
. temp_s
, следовательно, также является массивом (1024,1024)
и mask
, который является массивом (1023,1023)
. Я пробовал сделать mask
a (1024,1024)
, чтобы проверить, не получаю ли я индексную ошибку только из-за разницы в фигурах, но это ничего не меняет.
Что ожидается от этого: 'temp_s [tuple (mask)]'? –
Предполагается индексировать 'temp_s' с помощью' mask'. Я перевел все это из кода Matlab, который использовал его как temp_s (mask). – songbird813
, если вы создаете 'tuple' - его нельзя использовать как индекс (насколько мне известно). –