#python #python-3.x #numpy
#питон #python-3.x #тупой
Вопрос:
import numpy as np
G1 = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]],)
G1_Compare = G1 > 4
print(G1[G1_Compare])
Выходной сигнал:
[ 5 6 7 8 9 10 11]
Я понимаю, что это делает, но я просто не понимаю, что за операция здесь происходит.
Что именно происходит за кулисами?
Кроме того, почему он не печатает элементы false?
Комментарии:
1. В какой операции проблема?
Ответ №1:
Концептуальное понимание G1 > 4
:
G1
это массив формы (3,4)
numpy
.
In G1 > 4
, G1
участвует в качестве операнда в операции сравнения ( >
).
Другой операнд — это 4
, который вообще не является массивом и не имеет измерений.
Теперь происходит трансляция.
Из-за широковещательной передачи, концептуально, скаляр 4
транслируется в массив формы (3,4)
, состоящий всего из нескольких 4
s в качестве его элементов.
Итак, теперь, концептуально говоря, операция сравнения >
выполняется поэлементно между двумя массивами одинаковой формы, каждый из которых имеет форму (3,4)
.
В результате получается логический массив ( G1_Compare
) формы (3,4)
, состоящий из True
False
значений и . True
Значение встречается в тех координатах элемента, где соответствующий элемент G1
больше, чем у транслируемого массива, состоящего из 4
s .
Обратите внимание, что трансляция массива фактически не создает никакого нового массива (даже временного) с транслируемой формой. Это всего лишь концепция или метафора для объяснения / понимания определенного поведения и результата. Внутренне numpy
использует манипуляции с индексом для достижения эффекта трансляции, фактически не создавая никаких новых массивов в транслируемой форме.
Концептуальное понимание G1[G1_Compare]
:
Здесь происходит логическое индексирование.
Ваш вопрос «почему он не печатает ложные элементы?» на самом деле не имеет смысла — какой смысл использовать логический индекс, если бы он выбирал элементы True
-position, а также элементы False
-position? Весь смысл использования логического индекса заключается в выборе и возврате элементов в True
позициях и исключении элементов в False
позициях.