English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Описание свойств массива NumPy и примеры
Мера измерений массива в NumPy называется рангом (rank), это количество измерений массива. Ранг одномерного массива равен 1, ранг двумерного массива равен 2 и так далее.
В NumPy каждый линейный массив называется осью (axis), axis=0 означает операцию по оси 0, то есть операцию с каждой колонкой; axis=1 означает операцию по оси 1, то есть операцию с каждой строкой.
Например, двумерный массив можно представить как два одномерных массива, где каждый элемент первого одномерного массива также является одномерным массивом.
Таким образом, одномерный массив является осью (axis) в NumPy, первая ось соответствует базовому массиву, а вторая ось - это массивы в базовом массиве. Количество осей - ранг, это количество измерений массива.
Одними из важнейших свойств объектов ndarray в массивах NumPy являются
типов данных, поддерживаемых numpy, больше Внутренние типы данных Pythonони значительно больше, в основном они могут соответствовать типам данных языка C, где некоторые типы соответствуют встроенным типам Python. В таблице приведены常用 типы данных NumPy.
ndarray.ndim - ранг, то есть количество осей или количество размерностей.ndarray.shape - размерности массива, для матрицы n строк m столбцов.ndarray.size - общее количество элементов массива, эквивалентное значению n*m в .shape.ndarray.dtype - тип элементов объекта ndarray.ndarray.itemsize - размер каждого элемента объекта ndarray, выраженный в байтах.ndarray.flags - информация о памяти объекта ndarray.ndarray.real - действительная часть элементов ndarray.ndarray.imag - мнимая часть элементов ndarray.ndarray.data - буфер, содержащий фактические элементы массива, так как обычно элементы массива получают через индекс массива, поэтому обычно не нужно использовать этот атрибут.
ndarray.ndim используется для возврата числа размерностей массива, равного рангу.
>>> import numpy as np >>> a = np.arange(24) >>> print(a.ndim) 1 # a теперь имеет одну размерность >>> b = a.reshape(2,4,3) >>> print(b.ndim) 3 # b теперь имеет три размерности
ndarray.shape представляет собой размерности массива, возвращая тупль (tuple), длина которого равна числу размерностей, то есть свойству ndim (秩). Например, двумерный массив, его размерности представляют "число строк" и "число столбцов".
ndarray.shape также можно использовать для изменения размера массива.
>>> import numpy as np >>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]]) >>> print(a.shape) (2, 6) >>> a.shape = (6,2) >>> print(a) [[1 2] [3 4] [5 6] [4 5] [6 7] [8 9]]
В то же время, в NumPy также предоставлена функция reshape для изменения размера массива, пример приведен ниже:
>>> import numpy as np >>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]]) >>> b = a.reshape(6,2) >>> print(b) [[1 2] [3 4] [5 6] [4 5] [6 7] [8 9]]
ndarray.size является количеством элементов в массиве. Равен np.prod(a.shape), то есть произведению размеров массива.
a.size возвращает стандартное целое число с任意ной точностью Python. Для других методов получения того же значения может быть по-другому (например, рекомендуетсяый метод np.prod(a.shape), который возвращает экземпляр np.int_), и если это значение используется далее в вычислениях, которые могут привести к переполнению фиксированного大小的 целого типа, это может быть важно.
>>> import numpy as np >>> x = np.zeros((3, 5, 2), dtype=np.complex128) >>> x.size 30 >>> np.prod(x.shape) 30
>>> import numpy as np >>> x array([[0, 1], [2, 3]] >>> x.dtype dtype('int32') >>> type(x.dtype)
ndarray.itemsize возвращает размер каждого элемента массива в байтах.
Например, у массива с типом элементов float64 атрибут itemsiz равен 8 (float64 занимает 64 бита, длина каждого байта составляет 8, поэтому 64/8, занимая 8 байт), например, у массива с типом элементов complex32 атрибут item равен 4 (32/8).
>>> import numpy as np >>> x = np.array([1,2,3,4,5], dtype = np.int8) >>> print(x.itemsize) 1 >>> y = np.array([1,2,3,4,5], dtype = np.float64) >>> print(y.itemsize) 8
ndarray.flags возвращает информацию о памяти объекта ndarray, включая следующие атрибуты:
C_CONTIGUOUS (C) - Данные расположены в едином непрерывном отрезке в стиле C.F_CONTIGUOUS (F) - Данные расположены в едином непрерывном отрезке в стиле Fortran.OWNDATA (O) - Массив обладает им используемым памятью или borrows it from another object.WRITEABLE (W) - Область данных может быть записана, установите это значение в False, чтобы данные были только для чтения.ALIGNED (A) - Данные и все элементы правильно выравнены на аппаратном уровне.UPDATEIFCOPY (U) - Этот массив является копией другого массива, и при его освобождении содержимое исходного массива будет обновлено.
>>> import numpy as np >>> a = np.array([1,2,3,4,5]) >>> print(a.flags) C_CONTIGUOUS: True F_CONTIGUOUS: True OWNDATA: True WRITEABLE: True ALIGNED: True WRITEBACKIFCOPY: False UPDATEIFCOPY: False
>>> import numpy as np >>> x = np.sqrt([1+0j, 0+1j]) >>> x.real array([1. , 0.70710678]) >>> x.real.dtype dtype('float64') >>> x.imag array([0. , 0.70710678]) >>> x.imag.dtype dtype('float64')