Применять условие строка за строкой в массиве

#python #numpy

#python #numpy

Вопрос:

Я новичок в 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)
  

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

Комментарии:

1. Как насчет a <= b ?

Ответ №1:

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

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

Поможет ли это вам?

Ответ №2:

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

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

Комментарии:

1. Это не работает. Он возвращает: Ошибка значения: не удалось передать операнды вместе с фигурами (14,31) (14,)

Ответ №3:

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

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

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

Ответ №4:

 c = [lambda x, y: x <= y] 

c(a,b)