Предок NumPy, Numeric, был разработан Джимом Хугунином. Также был создан пакет Numarray с дополнительной функциональностью. В 2005 году Трэвис Олифант выпустил пакет NumPy, добавив особенности Numarray в Numeric. Это проект с исходным кодом, и в его развитии поучаствовало уже много человек.
NumPy или Numerical Python — это библиотека Python, которая предлагает следующее:
- Мощный N-мерный массив
- Высокоуровневые функции
- Инструменты для интеграции кода C/C++ и Fortran
- Использование линейной алгебры, Преобразований Фурье и возможностей случайных чисел
Она также предлагает эффективный многомерный контейнер общих данных. С ее помощью можно определять произвольные типы данных. Официальный сайт библиотеки — www.numpy.org
Установка NumPy в Python
Ubuntu Linux
sudo apt update -y sudo apt upgrade -y sudo apt install python3-tk python3-pip -y sudo pip install numpy -y
Anaconda
conda install -c anaconda numpy
Массив NumPy
Это мощный многомерный массив в форме строк и колонок. С помощью библиотеки можно создавать массивы NumPy из вложенного списка Python и получать доступ к его элементам.
Массив NumPy — это не то же самое, что и класс array.array из Стандартной библиотеки Python, который работает только с одномерными массивами.
Одномерный массив NumPy.
import numpy as np a = np.array([1,2,3]) print(a)
Результатом кода выше будет
[1 2 3]
.Многомерные массивы.
import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a)
Результат —
[[1 2 3] [4 5 6]]
.
Атрибуты массива NumPy
ndarray.ndim
Возвращает количество измерений массива.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.ndim)
Вывод кода сверху будет 2, поскольку «a» — это 2-мерный массив.
ndarray.shape
Возвращает кортеж размера массива, то есть (n,m), где n — это количество строк, а m — количество колонок.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.shape)
Вывод кода — (2,3), то есть 2 строки и 3 колонки.
ndarray.size
Возвращает общее количество элементов в массиве.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.size)
Вывод — 6, потому что 2 х 3.
ndarray.dtype
Возвращает объект, описывающий тип элементов в массиве.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.dtype)
Вывод — «int32», поскольку это 32-битное целое число.
Можно явно определить тип данных массива NumPy.import numpy as np a = np.array([[1,2,3],[4,5,6]], dtype = float) print(a.dtype)
Этот код вернет
float64
, потому что это 64-битное число с плавающей точкой.ndarray.itemsize
Возвращает размер каждого элемента в массиве в байтах.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.itemsize)
Вывод — 4, потому что 32/8.
ndarray.data
Возвращает буфер с актуальными элементами массива. Это альтернативный способ получения доступа к элементам через их индексы.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(a.data)
Этот код вернет список элементов.
ndarray.sum()
Функция вернет сумму все элементов ndarray.import numpy as np a = np.random.random((2,3)) print(a) print(a.sum())
Сгенерированная в этом примере матрица —
[[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]]
, следовательно код вернет3.422183052180838
. Поскольку используется генератор случайных чисел, ваш результат будет отличаться.ndarray.min()
Функция вернет элемент с минимальным значением из ndarray.import numpy as np a = np.random.random((2,3)) print(a.min())
Сгенерированная в этом примере матрица —
[[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]]
, следовательно код вернет0.36277909
. Поскольку используется генератор случайных чисел, ваш результат будет отличаться.ndarray.max()
Функция вернет элемент с максимальным значением из ndarray.import numpy as np a = np.random.random((2,3)) print(a.min())
Сгенерированная в этом примере матрица —
[[0.46541517 0.66668157 0.36277909] [0.7115755 0.57306008 0.64267163]]
, следовательно код вернет0.7115755
. Поскольку используется генератор случайных чисел, ваш результат будет отличаться
Функции NumPy
type(numpy.ndarray)
Это функция Python, используемая, чтобы вернуть тип переданного параметра. В случае с массивом numpy, она вернетnumpy.ndarray
.import numpy as np a = np.array([[1,2,3],[4,5,6]]) print(type(a))
Код выше вернет
numpy.ndarray
.numpy.zeroes()
numpy.zeros((rows, columns), dtype)
Эта функция создаст массив numpy с заданным количеством измерений, где каждый элемент будет равняться 0. Если dtype не указан, по умолчанию будет использоваться dtype.import numpy as np np.zeros((3,3)) print(a)
Код вернет массив numpy 3×3, где каждый элемент равен 0.
numpy.ones()
numpy.ones((rows,columns), dtype)
Эта функция создаст массив numpy с заданным количеством измерений, где каждый элемент будет равняться 1. Если dtype не указан, по умолчанию будет использоваться dtype.import numpy as np np.ones((3,3)) print(a)
Код вернет массив numpy 3 x 3, где каждый элемент равен 1.
numpy.empty()
numpy.empty((rows,columns))
Эта функция создаст массив, содержимое которого будет случайным — оно зависит от состояния памяти.import numpy as np np.empty((3,3)) print(a)
Код вернет массив numpy 3×3, где каждый элемент будет случайным.
numpy.arrange()
numpy.arrange(start, stop, step)
Эта функция используется для создания массива numpy, элементы которого лежат в диапазоне значений отstart
доstop
с разницей равнойstep
.import numpy as np a=np.arange(5,25,4) print(a)
Вывод этого кода —
[5 9 13 17 21]
numpy.linspace()
numpy.linspace(start, stop, num_of_elements)
Эта функция создаст массив numpy, элементы которого лежат в диапазоне значений междуstart
доstop
, аnum_of_elements
— это размер массива. Тип по умолчанию —float64
.import numpy as np a=np.linspace(5,25,5) print(a)
Вывод —
[5 10 15 20 25]
.numpy.logspace()
numpy.logspace(start, stop, num_of_elements)
Эта функция используется для создания массива numpy, элементы которого лежат в диапазоне значений отstart
доstop
, аnum_of_elements
— это размер массива. Тип по умолчанию — float64. Все элементы находятся в пределах логарифмической шкалы, то есть представляют собой логарифмы соответствующих элементов.import numpy as np a = np.logspace(5,25,5) print(a)
Вывод —
[1.e+05 1.e+10 1.e+15 1.e+20 1.e+25]
.numpy.sin()
numpy.sin(numpy.ndarray)
Этот код вернет синус параметра.import numpy as np a = np.logspace(5,25,2) print(np.sin(a))
Вывод кода сверху равен
[0.0357488 -0.3052578]
. Также естьcos()
,tan()
и так далее.numpy.reshape()
numpy.reshape(dimensions)
Эта функция используется для изменения количества измерений массива numpy. От количества аргументов вreshape
зависит, сколько измерений будет в массиве numpy.import numpy as np a = np.arange(9).reshape(3,3) print(a)
Вывод этого года — 2-мерный массив 3×3.
numpy.random.random()
numpy.random.random((rows, column))
Эта функция возвращает массив с заданным количеством измерений, где каждый элемент генерируется случайным образом.a = np.random.random((2,2))
Этот код вернет ndarray 2×2.
numpy.exp()
numpy.exp(numpy.ndarray)
Функция вернет ndarray с экспоненциальной величиной каждого элемента.b = np.exp([10])
Значением кода выше будет
22025.4657948
.numpy.sqrt()
numpy.sqrt(numpy.ndarray)
Эта функция вернет ndarray с квадратным корнем каждого элемента.b = np.sqrt([16])
Этот код вернет значение 4.
Базовые операции NumPy
a = np.array([5, 10, 15, 20, 25])
b = np.array([0, 1, 2, 3])
Этот код вернет разницу двух массивов
c = a - b
.Этот код вернет массив, где каждое значение возведено в квадрат
b**2
.Этот код вернет значение в соответствии с заданным выражением
10 * np.sin(a)
.Этот код вернет
True
для каждого элемента, чье значение удовлетворяет условиеa < 15
.
Базовые операции с массивом NumPy
a = np.array([[1,1], [0,1]])
b = np.array([[2,0],[3,4]])
Этот код вернет произведение элементов обоих массивов
a * b
.Этот код вернет матричное произведение обоих массивов
a @ b
илиa.dot(b)
.
Выводы
Из этого материала вы узнали, что такое numpy и как его устанавливать, познакомились с массивов numpy, атрибутами и операциями массива numpy, а также базовыми операциями numpy.