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

The NP.NONZERO () Хитрость: как искать на Numpy Array

Каждый ученый для данных должен знать ненулевую () Trick Numpy! Узнайте это сейчас …

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

Эта статья объясняет Вы, как найти элементы массива, используя ненулевые () Функция в Numpy – с использованием практической науки о науке данных.

Урбанизация Megatrend не приходит к остановке в ближайшее время. Автомобили, фабрики и другие источники загрязнения в конечном итоге приводят к плохому качеству воздуха. Этот онлайн-лайнер показывает вам, как бороться с этим в перспективе данных ученых данных!

Этот пример взят из моей книги Python One-Listers:

Python One-Liners Книга

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:

Используйте структуры данных для решения проблем реальных проблем, например, использование булевой индексации для поиска городов с загрязнением выше среднего Используйте Numpy Основы, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку

К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.

Получите свой Python One-Liners сейчас !!

Ненулевой () трюк

Индекс качества воздуха (AQI) измеряет опасность неблагоприятных последствий для здоровья. Обычно используется для сравнения качества воздуха разных городов. В этом одноклассник вы собираетесь погрузиться в индекс качества воздуха в четырех городах: Гонконг, Нью-Йорк, Берлин и Монреаль.

Одноклассник обращается к проблеме поиска выше среднего загрязненных городов. Мы определяем их как города, где пиковое значение AQI превышает общий средний среди всех измерений всех городов.

Важным элементом нашего решения будет находить элементы, которые соответствуют определенному состоянию в Numpy Array. Это распространенная проблема в науке данных, и вам понадобится постоянно в ваших практических проектах.

Итак, давайте рассмотрим, как вы можете найти элементы массива, которые соответствуют определенному условию.

Numpy предлагает функцию ненулевой (), которая находит индексы элементов в массиве, которые хорошо, не равны нулю. Вот пример:

import numpy as np

X = np.array([[1, 0, 0],
              [0, 2, 2],
              [3, 0, 0]])

print(np.nonzero(X))
# (array([0, 1, 1, 2], dtype=int64), array([0, 1, 2, 0], dtype=int64))

Результатом является кортеж двух двухместных массивов. Первый массив дает рядные индексы ненулевых элементов. Второй массив дает индексы столбцов ненулевых элементов.

Существует четыре ненулевые элементы в двумерном массиве: 1, 2, 2 и 3. Эти четыре ненулевые элементы находятся на позициях (0,0), (1,1), (1,2) и (2,0) в массиве.

Теперь, как вы можете использовать ненулевые (), чтобы найти элементы, которые соответствуют определенному условию в вашем массиве? Просто используйте другую отличную функцию Numpy: логические операции на массиве с вещанием!

import numpy as np

X = np.array([[1, 0, 0],
              [0, 2, 2],
              [3, 0, 0]])

print(X == 2)
"""
[[False False False]
 [False  True  True]
 [False False False]]
"""

Это на самом деле экземпляр вещания: целочисленное значение «2» копируется (концептуально) в новый массив с равной формой. Затем Numpy выполняет сравнение элементов и возвращает результирующий логический массив.

У вас есть представление о том, как объединить как функции ненулевых (), так и логических операций массива, чтобы найти элементы, которые соответствуют определенному условию?

Кончик: Python представляет собой тип «ложного» типа данных как целое число со значением «0».

Посмотрите на следующий фрагмент кода, чтобы увидеть, как это можно сделать.

Код

В фрагменте кода мы исследуем следующую проблему: «Найти города с пиками загрязнения выше среднего!»

## Dependencies
import numpy as np

## Data: air quality index AQI data (row = city)
X = np.array(
    [[ 42, 40, 41, 43, 44, 43 ], # Hong Kong
     [ 30, 31, 29, 29, 29, 30 ], # New York
     [ 8, 13, 31, 11, 11, 9 ], # Berlin
     [ 11, 11, 12, 13, 11, 12 ]]) # Montreal

cities = np.array(["Hong Kong", "New York", "Berlin", "Montreal"])

## One-liner
polluted = set(cities[np.nonzero(X > np.average(X))[0]])


## Result
print(polluted)

Результат

Массив данных X содержит четыре строки (одна строка для каждого города) и шесть столбцов (один столбец для каждого блока измерения – E.g. дней). Струнные массивы города содержат четыре имени городов в порядке их вхождений в массиве данных.

Вопрос в том, чтобы найти имена городов, для которых наблюдаются выше средние значения AQI. Опять же, вот одноклассник, который выполняет это:

## One-liner
polluted = set(cities[np.nonzero(X > np.average(X))[0]])

Давайте деконструируем один вкладыш, начиная с внутри:

print(X > np.average(X))
"""
[[ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [False False  True False False False]
 [False False False False False False]]
"""

Булевое выражение использует вещание, чтобы принести обе операнды к той же форме. Затем он выполняет разумное сравнение элемента, чтобы придуматься с логическим массивом, который содержит «True», если соответствующее измерение наблюдалось выше среднего значения AQI. Мы используем функцию np.average (), чтобы вычислить среднее значение AQI всех элементов Numpy Array.

Создавая этот логический массив, мы точно знаем, какие элементы удовлетворяют условию превышения среднего, и какие элементы не следует.

Напомним, что «True» Python «True» представлена «1» и «false», представлена «0». Следовательно, мы можем использовать функцию ненулевые (), чтобы найти все индексы строки и столбцов, которые соответствуют условию. Вот как вы можете сделать это:

print(np.nonzero(X > np.average(X)))
"""
(array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2], dtype=int64),
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 2], dtype=int64))
"""

Первое значение кортежа содержит все индексы строк с ненулевыми элементами, а второе значение кортежа содержит их соответствующие индексы колонны. Другими словами, это все строки и столбцы, где значения AQI превышают среднее загрязнение в матрице данных.

Мы заинтересованы только в рядных показателях, потому что мы ищем города, где такое загрязнение произошло в наших данных. Мы можем использовать эти индексы строки для извлечения имен строки из нашего строкового массива:

print(cities[np.nonzero(X > np.average(X))[0]])
"""
['Hong Kong' 'Hong Kong' 'Hong Kong' 'Hong Kong' 'Hong Kong' 'Hong Kong'
 'New York' 'New York' 'New York' 'New York' 'New York' 'New York'
 'Berlin']
"""

В полученной последовательности строк много дубликатов. Причина в том, что Гонконг и Нью-Йорк имеют много таких выше средних измерений AQI.

Теперь осталось только одно: удаление дубликатов. Это может быть легко достигнуто путем преобразования последовательности на набор Python. Наборы не являются дублирующими, поэтому результат дает нам все названия города, где загрязнение превысило средние значения AQI.

Куда пойти отсюда?

Эта статья показала вам один из многих объявлений, которые могут повысить вашу продуктивность и научные навыки данных.

Хотите узнать больше таких трюков? Получите свой «Coffe Break Numpy»! Книга полна советов, трюков и оздоровительных головоломок, чтобы поднять вас на экспертный уровень Numpy. Но лучшее: это 100% удовольствие!

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

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

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

Оригинал: “https://blog.finxter.com/the-np-nonzero-trick-how-to-search-a-numpy-array/”