English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Основы NumPy Ndarray
Одна из самых важных особенностей NumPy - это объект N-мерного массива ndarray, который является集合ом данных одного типа, индексация элементов которого начинается с нуля.
Объект ndarray предназначен для хранения многомерных массивов из элементов одного типа.
Каждый элемент ndarray в памяти имеет одинаковую область хранения.
ndarray внутренне состоит из следующего:
Понтер к данным (в памяти или в блоке данных файла, маппинга памяти).Тип данных или dtype, который описывает клетки с фиксированным размером значений в массиве.Туплятор, представляющий форму массива (shape), который указывает на размер каждого измерения.Туплятор шага (stride), в котором целые числа указывают на количество байт, которые необходимо "перешагнуть", чтобы перейти к следующему элементу текущего измерения.
Основной объект NumPy - это гомогенная многомерная массив. Это таблица элементов (обычно числовые), все типы элементов одинаковы, и они индексируются несоответствующими целыми числами.
Например, координаты точки в 3D пространстве [1, 2, 1] имеют одну ось. Эта ось содержит 3 элемента, поэтому мы говорим, что ее длина составляет 3. В примере, показанном ниже, массив имеет 2 оси. Длина первой оси составляет 2, длина второй оси составляет 3.
[[1., 0., 0.], [0., 1., 2.]]
Класс массива NumPy называется ndarray. Здесь важно отметить, что numpy.array и класс из стандартной библиотеки Python array.array различаются. Класс array.array обрабатывает только одномерные массивы и предоставляет меньше функций. Объект ndarray имеет более важные атрибуты, как показано ниже:
ndarray.ndim - Количество осей (измерений) массива. В Python мире количество измерений называется rank.ndarray.shape - Размерность массива. Это тупл с целыми числами, представляющими размер массива в каждой维度. Длина тупла shape соответствует rank или количеству измерений ndim.ndarray.size - Общее количество элементов массива. Это равно произведению элементов shape.ndarray.dtype - Объект, описывающий тип элементов массива. Тип можно создать или指定 с помощью стандартных типов Python. Также NumPy предоставляет свои собственные типы.ndarray.itemsize - Размер в байтах каждого элемента массива. Например, для массива с элементами типа float64 размер itemsize составляет 8 (= 64/8).ndarray.data - Этот буфер содержит фактические элементы массива. Обычно, мы не используем этот атрибут, так как мы будем использовать индексирование для доступа к элементам массива.
Рассмотрим конкретный пример
>>> import numpy as np >>> a = np.arange(15).reshape(3, 5) >>> a array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]] >>> a.shape (3, 5) >>> a.ndim 2 >>> a.dtype.name 'int64' >>> a.itemsize 8 >>> a.size 15 >>> type(a)
Создание ndarray возможно только с помощью функции array из NumPy:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
object - Массив или вложенные спискиdtype - Тип данных элементов массива, опциональноcopy - Нужен ли копирование объекта, опциональноorder - Стиль создания массива, C - строка, F - столбец, A - любая сторона (по умолчанию)subok - По умолчанию возвращается массив,一致的 с типом базового классаndmin - Указать минимальную размерность создаваемого массива
Ниже мы рассмотрим несколько примеров, чтобы лучше понять использование Ndarray.
>>> import numpy as np >>> a = np.array([1,2,3,4,5]) >>> print(a) [1 2 3 4 5]
>>> import numpy as np >>> a = np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> print(a) [[1 2 3] [4 5 6] [7 8 9]
>>> import numpy as np >>> a = np.array([1,2,3,4,5], ndmin = 3) >>> print(a) [[[1 2 3 4 5]]]
>>> import numpy as np >>> a = np.array([1,2,3,4,5,6], dtype = float32) >>> print(a) [1. 2. 3. 4. 5. 6.]