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

3 маленьких известных Numpy Tricks в одной линии [Python Puzzle]

Эта статья улучшает ваши навыки Numpy в трех областях: вещание, назначения нарезки и DTYPE.

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

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

Каждый Numpy Array имеет определенный тип данных. Держите это в виду, при изучении следующего одноклассного кода. Хотя вам нужно знать три разных предмета информации, чтобы понять одноклассник, вы, вероятно, можете уже догадаться, что там происходит. Но прежде чем читать дальше, подумайте о том, как вы обратитесь к следующей проблеме: скажем, у вас есть небольшой массив со многими строками. Вы хотите изменить значения одной конкретной строки. Но не все они, только всякая ценность. Как бы вы это сделали?

Код

Конкретная проблема, которую мы обращаемся к следующему однокласснику: как увеличить зарплату ученых на 10%, а только в каждом другом году – в одной строке кода?

## Dependencies
import numpy as np


## Data: salary in ($1000) [2017, 2018, 2019]
dataScientist =     [130, 132, 137]
productManager =    [127, 140, 145]
designer =          [118, 118, 127]
softwareEngineer =  [129, 131, 137]

employees = np.array([dataScientist,
                      productManager,
                      designer,
                      softwareEngineer])


## One-liner
employees[0,::2] = employees[0,::2] * 1.1


## Result
print(employees)

Найдите минутку и подумайте о выходе этого кода-фрагмента. Что бы вы ожидали, чтобы изменить? Какой тип данных полученного массива?

Результат

Скажем, вы работаете в компании, и бухгалтер просит вас проанализировать зарплату данных разных сотрудников в вашей компании. Вы создаете Numpy Array, который содержит соответствующие данные: каждая строка дает ежегодную зарплату одного профессионала (ученый для данных, диспетчер продуктов, дизайнер или инженер-программировщик). Каждый столбец дает соответствующие годы (2017, 2018, 2019). Следовательно, результирующий Numpy Array имеет четыре ряда и три столбца.

Бухгалтер говорит вам, что есть некоторые деньги, и руководство хочет укрепить самые важные профессионалы в компании. Вы верите в сильное будущее науки о данных, поэтому вы убедите бухгалтера дать больше денег спрятанными героями вашей компании: данные ученых. Какой лучший способ обновления насыщенного массива, чтобы заработать только зарплаты ученых данных на 10% (но только каждый другой год, начиная с первого года в вашей базе данных)?

Через некоторое время вы разрабатываете следующий красивый одноклассник:

employees[0,::2] = employees[0,::2] * 1.1

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

Но сначала давайте посмотрим на результат:

[[143 132 150]
 [127 140 145]
 [118 118 127]
 [129 131 137]]

Вы ожидали, что полученный простой массив выглядит так, как этот?

Какие три интересные концепции?

Во-первых, линия использует как концепции нарезки, так и нарезки в Numpy. В примере мы используем Slicing, чтобы получить все остальное значение первого ряда от сотрудников Numpy Array. Затем мы выполняем некоторые модификации и обновляем каждое другое значение первой строки, используя назначение среза. Эта процедура заменяет содержание первого ряда в NUMPY MARY с обновленными данными о заработной плате.

Во-вторых, хотя вы не поняли это, мы использовали мощную концепцию под названием «Вещание» в Numpy. Вещание означает, что Numpy автоматически исправляет элемент-мудрые операции Numpy массивы с различными формами. Например, оператор умножения * обычно выполняет умножение элементами, применительно к одно- или многомерным примечаниям. Но в однопрочее левый оператор представляет собой небольшой массив, в то время как правильный оператор представляет собой значение поплавка. Конечно, Numpy может просто через ошибку в этом случае и позволить разработчику исправить его, но создатели библиотеки решили реализовать интуицию программиста. NUMPY автоматически создает Numpy Array с одинаковым размером и размерностью и наполняет этот массив, концептуально с копиями значения поплавка. Но на самом деле Numpy выполняет вычисление, которое выглядит больше похоже на следующее:

np.array([143 150]) * np.array([1.1, 1.1])

В-третьих, вы, возможно, поняли, что полученный тип данных не плавает, а целое число – даже если мы выполняем арифметику с плавающей точкой. Причина проста Если вы это знаете: каждый массив NUMPY имеет связанный тип данных (который вы можете получить доступ к использованию свойства DTYPE). При создании массива Numpy понял, что массив содержит только целые значения. Таким образом, массив предполагается, что является целочисленным массивом. Таким образом, любая операция, которую вы выполняете в целочисленном массиве, не изменит тип данных. Обмойте раунды к целочисленным значениям. Вы можете увидеть это в следующем примере:

print(employees.dtype)
# int32
employees[0,::2] = employees[0,::2] * 1.1
print(employees.dtype)
# int32

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

Чтобы помочь вам выращивать свои навыки от базового уровня Python, чтобы использовать экспертизу Numpy, я написал новый Numpy Cook «Numpy Numpy». Он использует доказанные принципы хорошего обучения, такого как обучение на основе головоломки, читовные простыни и простые учебники.

Не пропустите на науке о данных и машинном обучении. Проверьте это!

«Breake Break Numpy: простой путь к научному мастерству данных, которые вписываются в вашу оживленную жизнь»

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

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

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