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 — хороший кандидат для использования.

Надеюсь, это поможет вам начать работу.

Спасибо за чтение !