Учитывая двумерный массив, я хотел бы найти неоднородные строки.
У меня есть 2D-массив numpy, и я применил условие, приводящее к другому 2D-массиву numpy логических значений. Теперь я хочу найти строки, которые не являются ни истинными, ни ложными. Можно ли применить оператор or в np.all?
x = np.array([[1,1,1,1,1,1],
[2,2,2,1,2,2],
[3,3,3,3,3,3,]])
y = x > 1
z = ~np.all((y == True) or (y == False), axis=1)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Новый массив [bool], помечающий разнородные строки. Например: [Ложь, Правда, Ложь]
Очень приветствуются: намеки на другие решения или функции.
Это возвращает [False False False]
.
or
— это оператор Python, который работает только со скалярными значениями. y
— это пустой массив со множеством логических значений.
Вам нужно два np.all
s, прежде чем они.
x = np.array([[1,1,1,1,1,1],
[2,2,2,1,2,2],
[3,3,3,3,3,3,]])
y = x > 1
z = ~(np.all(y == True, axis=1) | np.all(y == False, axis=1))
Используйте
|
вместоor
.