Как я могу выполнить операцию только с элементами массива 2D numpy, которые соответствуют условию в индексе, без повторения в Python? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь реализовать алгоритм решения, который будет использовать одно уравнение, если элемент массива отрицательный, и другой, если он положительный. Вот мой код для попытки различить два случая:

    Xn = X.copy()
    X[X[2:-2, 2:-2]>=0] = #algorithm A, calls several upstream values from Xn
    X[X[2:-2, 2:-2]<0] = #algorithm B, calls several downstream values from Xn

Я хочу присвоить значения только X [2: -2, 2: -2]. Форма X - (21,21), а X [2: -2,2: -2] - (17,17). Я получаю эту ошибку с приведенным выше кодом:

IndexError: логический индекс не соответствует индексированному массиву по измерению 0; размерность 21, но соответствующее логическое измерение - 17

Как я могу сделать это без итерации по каждому элементу?

1 Ответ

0 голосов
/ 07 мая 2020

Использовать векторизацию. Это решит все ваши проблемы.

...