Запрос о логических массивах NumPy / индексирование с помощью логических массивов

#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. В какой операции проблема?

2. numpy.org/doc/stable/reference/…

Ответ №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 позициях.