Простой Python. Современный стиль программирования (Любанович) - страница 256

).

Для того чтобы начать работу с NumPy, вы должны понять устройство основной структуры данных, многомерного массива ndarray (от N-dimensional array — «N-мерный массив») или просто array. В отличие от списков и кортежей в Python, все элементы должны иметь одинаковый тип.

NumPy называет количество измерений массива его рангом. Одномерный массив похож на ряд значений, двухмерный — на таблицу с рядами и колонками, а трехмерный — на кубик Рубика. Длина измерений может не быть одинаковой.


array в NumPy и array в Python — это не одно и то же. В дальнейшем в этом приложении я буду работать только с массивами NumPy.


Но зачем нам нужны массивы?

• Научные данные зачастую представляют собой большие последовательности.

• Научные подсчеты для таких данных часто выполняются с использованием матричной математики, регрессии, симуляции и других приемов, которые обрабатывают множество фрагментов данных одновременно.

• NumPy обрабатывает массивы гораздо быстрее, чем стандартные списки или кортежи Python.

Существует множество способов создать массив NumPy.

Создание массива с помощью функции array()

Вы можете создать массив из обычного списка или кортежа:

>>>> b = np.array([2, 4, 6, 8])

>>>> b

>array([2, 4, 6, 8])

Атрибут ndim возвращает ранг массива:

>>>> b.ndim

>1

Общее число значений можно получить с помощью атрибута size:

>>>> b.size

>4

Количество значений каждого ранга возвращает атрибут shape:

>>>> b.shape

>(4,)

Создание массива с помощью функции arange()

Метод arange() похож на стандартный метод range(). Если вы вызовете метод arange(), передав ему один целочисленный аргумент num, он вернет ndarray от 0 до num-1:

>>>> import numpy as np

>>>> a = np.arange(10)

>>>> a

>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>>> a.ndim

>1

>>>> a.shape

>(10,)

>>>> a.size

>10

С помощью двух значений он создаст массив от первого элемента до последнего минус один:

>>>> a = np.arange(7, 11)

>>>> a

>array([7,··8,··9, 10])

Вы также можете передать как третий параметр размер шага, который будет использован вместо единицы:

>>>> a = np.arange(7, 11, 2)

>>>> a

>array([7, 9])

До сих пор мы показывали примеры лишь с целыми числами, но метод arrange() работает и с числами с плавающей точкой:

>>>> f = np.arange(2.0, 9.8, 0.3)

>>>> f

>array([2.,··2.3,··2.6,··2.9,··3.2,··3.5,··3.8,··4.1,··4.4,··4.7,··5.,

>········5.3,··5.6,··5.9,··6.2,··6.5,··6.8,··7.1,··7.4,··7.7,··8.,··8.3,

>········8.6,··8.9,··9.2,··9.5,··9.8])

И последний прием: аргумент dtype указывает функции arrange(), какого типа значения следует создать:

>>>> g = np.arange(10, 4, -1.5, dtype=np.float)

>>>> g

>array([10.,···8.5,···7.,···5.5])