Применить условие строка за строкой в ​​массиве - PullRequest
0 голосов
/ 05 апреля 2019

Я новичок в python, так что это может быть простой вопрос. Извините, если это так!

У меня есть массив a, и я хотел бы знать, какие значения в каждой строке a ниже или равны значению в той же строке, что и b.

a = np.array([[8,1,7],[4,3,9],[5,2,6]])
b = np.array([[7],[4],[6]])

Полученный массив должен быть:

c = np.array([[False,True,True],[True,True,False],[True,True,True]])   

Я пробовал:

np.where((a <= b), True, False)

и

np.apply_along_axis(np.where((a <= b), True, False),1,a)

Никто из них не работает.

Ответы [ 4 ]

0 голосов
/ 05 апреля 2019

Извините, ребята,

Проблема заключалась в том, что массив b не был полностью определен: форма была (x,).Я изменил его, чтобы быть (х, 1), а затем все работало.

Спасибо всем!

0 голосов
/ 05 апреля 2019
c = [lambda x, y: x <= y] 

c(a,b)
0 голосов
/ 05 апреля 2019

Numpy отлично подходит для выполнения поэлементной логической операции!

В этом примере простое a<=b должно выполнить эту работу. Вы можете узнать больше об этом здесь https://jakevdp.github.io/PythonDataScienceHandbook/02.06-boolean-arrays-and-masks.html

0 голосов
/ 05 апреля 2019

Как насчет следующего:

s = np.where((a-b) < 0, True, False)
print(a[s])

Вам это поможет?

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