基本的数组属性

有了我们对NumPy多维数组的理解后,我们现在来了解一些使用代码来查看数组属性(例如维度)的方法吧。理解数组的“形状”(shape)是什么极其重要。

我们将使用以下的数组来进行讨论:

>>> import numpy as np
>>> example_array = np.array([[[ 0,  1,  2,  3],
...                            [ 4,  5,  6,  7]],
...
...                           [[ 8,  9, 10, 11],
...                            [12, 13, 14, 15]],
...
...                           [[16, 17, 18, 19],
...                            [20, 21, 22, 23]]])

根据之前的讨论,这是一个有着一下结构的3维数组:

  • 轴0描述从3页中选中哪一个。

  • 轴1描述从任何一页中的2行中选中哪一个。

  • 轴2描述从任何一页和行中的4列中选中哪一个。

ndarray.ndim:

数组的轴(维度)数。

# 数组的维度
>>> example_array.ndim
3

ndarray.shape:

成员为代表数组每个维度的项目数量的整数元组。如果一个2维数组有着 \(N\) 行和 \(M\) 列,那么形状将是 \((N, M)\)。所以这个形状元组的长度等于数组的维度。

# 数组的形状
>>> example_array.shape
(3, 2, 4)

ndarray.size:

这个数组总共的成员数。这等于数组形状的每个数的乘积。

# 数组的大小:数组中存了多少个成员
>>> example_array.size
24

ndarray.dtype:

描述数组成员的数据类型的对象。请回忆,NumPy的N维数组都是同质(homogenous)的:它们只能拥有同样数据类型的数字。

# `example_array` 存储整数。每个整数使用32比特(bit)的内存
>>> example_array.dtype
dtype('int32')

ndarray.itemsize:

数组每个成员的大小,单位是字节(byte)(1字节等于8比特)。比如说,类型为 float64 的数组的itemsize就是8 \((= \frac{64}{8})\),而类型为 complex32 的数组的itemsize就是4 \((= \frac{32}{8})\)

# `example_array` 的每个整数占用4字节(32比特)的内存
>>> example_array.itemsize
4

官方说明文档链接