Массивы numpy в Python
Язык Python не поддерживает непосредственно тип массива, для этого можно использовать списки, или же более эффективные средства в виде библиотеки NumPy. Массив в ней представлен типом ndarray. Так как часть библиотеки реализована на языке С, то и быстродействие ее на порядок больше, чем у стандартных списков. Данная особенность хорошо заметна при обработке больших данных. Tакие библиотеки, как Pandas и Keras построены на основе NumPy. Конечно же,подобие массива можно создать и на основе списков, но быстродействие а также отсутствие необходимости обрабатывать их в циклах, как списки, минимизирует возможные ошибки в коде повышая при этом производительность. По настоящему оценить элегантность массивов на основе библиотеки NumPy можно на практике, для чего перейдем к коду:
# Для начала установим саму библиотеку, если же устанавливается среда Anaconda,
# то пропускаем это действие
pip install numpy
# импортируем модуль numpy c псевдонимом
import numpy as np
# создадим новый массив из списка чисел
n = np.array([1,2,3,4,5])
# вывод
# array([1, 2, 3, 4, 5])
Функция array получает список в качестве аргумента и преобразует его в тип ndarray. Заметьте что функция array создает копию аргумента, не затрагивая его напрямую.
# в качестве аргумента можно передать несколько списков
s = [9,8,7,6,5]
# массив из двух списков
ns = np.array([s, s])
# проверим тип объекта
type(ns)
# вывод
# numpy.ndarray
# определим тип элементов образующих массив
ns.dtype
# вывод
# dtype('int32')
Размерности массива получают из ndim и shape. Где ndim возвращает количество строк или переданных в array аргументов, метод shape, в дополнение возвращает количество элементов в каждой строке.
# кол-во измерений массива
ns.ndim
# вывод, в массиве ns два измерения, т.е две строки
# 2
# форма массива
ns.shape
# вывод (2,5), т.е. в массиве две строки по пять чисел
# найдем размер массива, т.е. общее число элементов в нем
ns.size
# 10 элементов
# размер отдельных элементов в массиве
ns.itemsize
# вывод 4 байта
# Для перебора элементов используем цикл
for x in ns:
for i in x:
print(i)
Синтаксис массива предполагает передачу данных методу array внутри списка np.array([a1, a2, a3], dtype='int32'). Таким образом передача любого количества данных в массив происходит через один список. Вторым аргументом задается тип элементов массива. Для создания и заполнения массива значениями используются встроенные методы full, ones, zeros.
# метод zeros создает и заполняет массив указанным числом элементов с нулевыми значениями
np.zeros(10)
#вывод
#array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((10, 12), dtype='int')
'''
вывод:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
'''
# метод full заполняет массив ненулевыми значениями
np.full((10, 12), 23)
'''
вывод:
array([[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23],
[23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23]])
'''
Таким образом, numpy является достаточно удобным и при этом эффективным способом создания массивов в Python.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.