Как изменить значения в массиве numpy - PullRequest
0 голосов
/ 02 марта 2020
import numpy as np
a=np.array([[4,2,6],[3,6,5]])
b=np.array([3,5])

Я хочу обновить числа в «a», которые больше, чем числа в «b», до np.nan. Если они меньше или равны, я не хочу, чтобы это изменилось. Я хочу сравнить первый ряд «a» с первым скаляром «b», а второй ряд «a» - со вторым скаляром «b».

Например,

a = array([[4, 2, 6],
           [3, 6, 5]])

обновленное значение должно быть:

array([[nan, 2, nan],
       [3, nan, 5]])

Я пробовал это:

for i in range(2):
     a[i]=np.where(a[i]<=b[i],a[i],np.nan)

Но это не работает. ПОМОГИ МНЕ ПОЖАЛУЙСТА !!

1 Ответ

1 голос
/ 02 марта 2020

Вы можете написать так:

import numpy as np
a=np.array([[4,2,6],[3,6,5]])
b=np.array([3,5])

# shape in compared axis must be the same or one of their length must be equal 1
# in this case their shape is b(2,1) and a(2,3)

a = np.where(a <= b.reshape(b.shape[0],1), a, np.nan)
print(a)

но в более сложных случаях я не уверен, что это будет работать

...