Рубрики
Без рубрики

Условная индексация: Как условно выберите элементы в Numpy Array?

Описание проблемы: у вас есть множество массив. Вы хотите выбрать определенные элементы из массива. Но ни нарезки, ни индексации, кажется, не решают вашу проблему. Что ты можешь сделать? В этом коротком руководстве я покажу вам, как выбрать определенные элементы Numpy Array через логические матрицы. Функция называется условной индексацией или селективной индексацией. … Условная индексация: Как условно выберите элементы в Numpy Array? Прочитайте больше “

Автор оригинала: Chris.

Описание проблемы: У вас есть Numpy Array Отказ Вы хотите выбрать определенные элементы из массива. Но ни нарезки, ни индексации, кажется, не решают Ваш проблема. Что ты можешь сделать?

В этом коротком руководстве я покажу вам, как выбрать определенные элементы Numpy Array через логические матрицы. Функция называется Условная индексация или Выборочная индексация Отказ

Выборочная индексация: Numpy массивы могут быть нарезанный Чтобы извлечь подстанчику глобального массива. Нормальное нарезка, такое как [I: J] будет вырезать последовательность между Я и J Отказ Но Выборочная индексация (Также: Условная индексация ) позволяет вырезать произвольную комбинацию элементов из множества, определяя логическое массив с той же формой. Если логическое значение по индексу (Я, j) это Правда Элемент будет выбран, в противном случае нет.

Например, именно поэтому вы можете использовать функцию вещания Numpy для условно выбора элементов, которые падают в определенном диапазоне:

import numpy as np


A = np.array([[1,2,3],
             [4,5,6],
             [1,2,3]])

print(A[A > 3])
# [4 5 6]

Вот еще один пример селективной индексации:

import numpy as np


a = np.arange(9)
a = a.reshape((3,3))

print(a)
# [[0 1 2]
# [3 4 5]
# [6 7 8]]

b = np.array(
    [[ True, False, False],
     [ False, True, False],
     [ False, False, True]])
print(a[b])
# Flattened array with selected values from a
# [0 4 8]

В приведенном выше коде матрица B С формой (3,3) это параметр А Схема индексации.

Красивая, не так ли?

Позвольте мне выделить важную деталь. В примере вы выбираете произвольное количество элементов из разных осей. Как должен решить переводчик Python, чтобы решить об окончательной форме? Например, вы можете выбрать четыре ряда для столбца 0, но только 2 строки для столбца 1 – какая здесь форма? Существует только одно решение: результат этой операции должен быть одномерным множеством.

Задний план

Давайте начнем с двух частей фоновой информации, чтобы помочь вам обработать код более эффективно:

💡 Функция NP.Arge ([начало,] Стоп [, шаг]) Создает новый массив с равномерно разнесенным номером между запуском (включительно) и останавливаться (эксклюзивным) с данным размером шага. Например, НП. arange (1, 6, 2) Создает Numpy Array [1, 3, 5] Отказ Вы также можете пропустить начальные и шагные аргументы (значения по умолчанию являются Start = 0 и Step = 1 ).

Перед тем, как мы погрузимся в условную индексацию, давайте сначала введем концепцию перезарядки azypy Array:

💡 Функция Array.Reshape (форма) берет Форма кортеж в качестве аргумента, тогда как каждое значение кортежа определяет количество значений данных одного измерения. Он приносит Numpy Array в новую форму, как указано в аргументе формы.

Numpy Cheat лист (PDF)

Вот быстрое скачивание для вас: я создал этот мошеннический лист, чтобы объяснить некоторые важные Numpy Concepts для моих студентов кодирования.

Вы также можете скачать больше читов для читов Python:

Вы хотите стать Numpy Master? Проверьте нашу интерактивную книгу головоломки Coffe Break Numpy И повысить свои навыки науки о данных! (Ссылка Amazon открывается на новой вкладке.)

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.