Python Нампи
Обзор и начало работы
Что это ?
Если вы работаете или изучаете python, рано или поздно вы столкнетесь с массивами Numpy, я рискну предположить, что numpy, наряду с кадрами данных pandas, являются рабочими лошадками данных в том, что касается python. С точки зрения непрофессионала, массивы Numpy — это контейнеры данных, которые могут представлять несколько измерений, запрашиваться и обрабатываться, или, если вы предпочитаете официальное определение из документов:
NumPy’s main object is the homogeneous multidimensional array. It is a table of elements (usually numbers), all of the same type, indexed by a tuple of non-negative integers. In NumPy dimensions are called axes.
От списков к массивам Numpy
Возможно, вы знакомы со списками Python:
list = [1,2,3,4,5,6] print(list) >>> [1, 2, 3, 4, 5, 6]
Что ж, массив Numpy на первый взгляд — очень похожее понятие:
import numpy as np np_array = np.array([1, 2, 3, 4, 5, 6]) print(np_array) >>> [1 2 3 4 5 6] Do note the lack of commas which tell us we are dealing with something different than a regular list.
SideNote: Зачем использовать Numpy? : Потому что это быстрее, чем обычный список и потому что его использование широко распространено? ¯\_(ツ)_/¯
Создание простых массивов:
Прочтите следующее для простого создания массива Numpy:
Тип и преобразование типов
Вы могли заметить, что некоторые числа выше являются числами с плавающей запятой 0.
, а другие — целыми (целыми) 1,2,3
, поэтому возникает вопрос, какие типы поддерживаются и как их изменить:
You can find all the types and more information here: Numpy data Types
Размеры и форма
До сих пор мы рассматривали очень простые массивы Numpy, но полезность и сложность возрастают, когда мы начинаем использовать несколько измерений…
Измерения имеют больше смысла в сочетании с фактическими значениями или вариантами использования, поэтому, например, список продуктов можно выразить в виде одномерного массива Numpy:
grocery_list = np.array(['eggs', 'milk', 'cereal', 'bacon']) print("Dimensions:", grocery_list.ndim) >>> Dimensions: 1 print("Shape:", grocery_list.shape) Dimensions: 1 >>> Shape: (4,)
Вы можете проверить количество измерений (или осей) с помощью ndim
;shape
, что даст вам размер массива в каждом измерении, здесь 4 — количество элементов в нашем единственном измерении, длина shape
в этом случае 1 также является количеством измерений.
Диаграмма X, Y состоит из 2 пар точек данных, поэтому имеет смысл представить ее в виде двумерного массива:
chartData = X,Y = np.array([[1, 2, 3, 4],[2, 4, 6, 8]]) Dimensions: 2 Shape: (2, 4) length: 2 = 2 dimensions, first axe has 2 elements [1,2,3,4,] and [2,4,6,8], the second axe has 4 elements, also note we are assigning X and Y values upon creation which is a common way to pass values to a chart... print(X): >>> [1 2 3 4] print(Y): >>> [2 4 6 8]
Точка в пространстве X,Y,Z может быть выражена в трех измерениях, как вы уже догадались:
point_in_space = X,Y,Z = np.array([[[1]],[[2]],[[3]]]) Dimensions: 3 Shape: (3, 1, 1)
Если мы добавим 4-е измерение ( комментарий ) к точке, мы получим:
point_in_spaceWithComment = X, Y, Z, comment = np.array([ [[[1]]], [[[2]]], [[[3]]], [[['My Favorite Point']]] ]) Dimensions: 4 Shape: (4, 1, 1, 1)
Это всего лишь примеры, чтобы показать вам, как писать измерения с нуля и как выяснить, с каким количеством измерений вы имеете дело. Например, мы могли бы переписать последний пример, сделав его более удобным для глаз и практичным:
points_in_spaceWithComments = np.array([ [2, 4, 2, 'Comment1'], [4, 6, 8, 'Comment2'], [1, 4, 3, 'Comment3'] ]) Dimensions: 2 Shape: (3, 4)
Ввод/вывод данных и индексация
К настоящему моменту я надеюсь, что у вас есть общее представление о том, что такое массив Numpy. Чтобы продолжить этот обзор, давайте рассмотрим выбор, добавление и удаление элементов:
Если вы когда-либо работали со списками на Python, это должно показаться вам знакомым, хотя если вы посмотрите на второй пример, там есть аргумент axis
, и мы не говорили о выборе элементов в многомерном массиве Numpy, для этого нам понадобится индексирование и нарезка
Работа с несколькими измерениями:
Выбор, индексация, нарезка в нескольких измерениях на удивление просты, если вы знаете синтаксис, в основном добавьте запятую, чтобы перейти к следующему измерению, все, что мы рассмотрели ранее, по-прежнему применимо:
Изменение формы
Последняя вещь Numpy, с которой вы можете столкнуться при запуске, — это изменение формы, которое, как следует из названия, изменяет существующий массив, придавая ему другую форму:
Что еще ?
Я бы посоветовал вам несколько мест, если вы хотите изучить более сложные темы:
Meshgridsсложныесеткоподобные массивы
Рассылка (расширенные операции с массивами)
В общем, Numpy — это еще один инструмент в вашей сумке программиста, когда вы сталкиваетесь со сложными числовыми данными (и другими типами), которые вам нужно хранить, обрабатывать и оперировать (и делать это быстро). Numpy — хороший кандидат для использования.
Надеюсь, это поможет вам начать работу.
Спасибо за чтение !