Массивы numpy в Python

Массивы 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.

Источник

Просмотров:

Добавить комментарий

Adblock
detector