Как обновить столбец NumPy, где условие столбца соответствует? - PullRequest
0 голосов
/ 30 августа 2018

Если у меня есть следующее:

import numpy as np
a = np.array([[0, 1],
              [1, 3],
              [4, 4]])

И хотите обновить значение столбца, если условие столбца выполнено. Например, если значение 2-го столбца больше 2, замените только значение этого столбца на 9.

a = [[0, 1],
     [1, 9],
     [4, 9]]

Я бы подумал, что это сработает, но он обновляет все значения в этой строке.

a[a[:,1] > 2] = 9

Но он заменяет все значения в строке.

a =[[0, 1],
    [9, 9],
    [9, 9]]

Полагаю, мне не хватает понимания того, как здесь создается логическое индексирование.

1 Ответ

0 голосов
/ 30 августа 2018

Вам нужно:

import numpy as np
a = np.array([[0, 1],
               [1, 3],
               [4, 4]])

a[:,1]=  np.where(a[:,1]>2, 9, a[:,1])

print(a)

Выход:

array([[0, 1],
       [1, 9],
       [4, 9]])

почему ваш код не работает

попробуйте распечатать print(a[a[:,1] > 2])

выдаст вывод:

[[1 3]
 [4 4]]

Он проверит 2-й индекс, если он больше 2, вернет всю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...