English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy Ndarray对象

Connaissances de base sur l'objet ndarray de NumPy

L'une des caractéristiques les plus importantes de NumPy est son objet de tableau à N dimensions ndarray, qui est une collection de données de même type, avec un indexage des éléments de la collection commençant par l'indice 0.
L'objet ndarray est utilisé pour stocker des tableaux multidimensionnels composés d'éléments de même type.
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:

一个指向数据(内存或内存映射文件中的一块数据)的指针。数据类型或 dtype,描述在数组中的固定大小值的格子。一个表示数组形状(shape)的元组,表示各维度大小的元组。一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

NumPy的主要对象是同构多维数组。它是一个元素表(通常是数字),所有类型都相同,由非负整数元组索引。在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类型创建或指定dtype。另外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 只需调用 NumPy 的 array 函数即可:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数说明:

object - 数组或嵌套的数列dtype - 数组元素的数据类型,可选copy - 对象是否需要复制,可选order - 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)subok - 默认返回一个与基类类型一致的数组ndmin - 指定生成数组的最小维度

Ndarray 实例

下面我们通过一些实例来更好地理解Ndarray的用法。

1、一维数组
>>> import numpy as np
>>> a = np.array([1,2,3,4,5)
>>> print(a)
[1 2 3 4 5]
2、多维数组
>>> 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]
3、指定数组维度
>>> import numpy as np
>>> a = np.array([1,2,3,4,5], ndmin = 3)
>>> print(a)
[[1 2 3 4 5]]
4、指定数组元素类型
>>> import numpy as np
>>> a = np.array([1,2,3,4,5,6], dtype = float32)
>>> print(a)
[1. 2. 3. 4. 5. 6.]