NumPy 入门

概述

NumPy 是一个 Python 语言的第三方库,实现了高效的多维数组数据结构并提供了丰富的数学函数库。

使用 conda 安装 NumPy:

1conda install numpy

使用 NumPy 必须先导入,通常按如下方式导入:

1import numpy as np

多维数组

NumPy 中最核心的数据结构为多维数组(n-dimensional array, ndarray),相应的类为 numpy.ndarray ,该类可以同时用于表示标量、向量、矩阵和张量。实际上,标量是维度数量为 0 的多维数组,向量是维度个数为 1 的多维数组,而矩阵是维度维度个数为 2 的多维数组,张量是维度个数大于等于 3 的多维数组。

NumPy 中的 ndarray 和 Python 内置 list 的区别在于:

  • ndarray 是同质的,必须存放相同类型元素;list 是不同质的,可以存放不同类型元素。

  • ndarray 速度更快,占用内存更少

可以如下创建多维数组:

 1>>> # 用 Python list 初始化数组
 2>>> a = np.array([1, 2, 3, 4, 5, 6])
 3>>> a
 4array([1, 2, 3, 4, 5, 6])
 5>>> # 用嵌套的 list 来初始化数组
 6>>> b = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
 7>>> b
 8array([[ 1,  2,  3,  4],
 9       [ 5,  6,  7,  8],
10       [ 9, 10, 11, 12]])

访问数组元素:

1>>> a[0]
21
3>>> b[1][2]
47
 1>>> # 元素类型
 2>>> a.dtype
 3dtype('int64')
 4>>> b.dtype
 5dtype('int64')
 6>>> # 数组形状
 7>>> a.shape
 8(6,)
 9>>> b.shape
10(3, 4)

在 NumPy 中维度也称做轴(axes),例如对于如下形式的 2 维数组:

1[[0., 0., 0.],
2 [1., 1., 1.]]

我们称其包含两个 axes,第一个 axes 长度为 2,第二个 axes 长度为 3。

注:

  • 不同多维数组之间可能会共享底层数据,因此对某个多维数组的修改可能会影响到其他多维数组。

创建数组

下面列出来一些常见的用于创建数组的函数:

函数 描述
np.array() 创建数组(用指定值初始化)
np.zeros() 创建元素全部为 0 的数组
np.ones() 创建元素全部为 1 的数组
np.empty() 创建数组(元素未初始化)
np.arnage() 创建等间隔的数组
np.linspace() 创建线性分布的数组

使用 Python 内置 list 来是初始化数组:

1>>> np.array([1, 2, 3])
2array([1, 2, 3])

创建元素全部为 0 的数组:

1>>> np.zeros(2)
2array([0., 0.])

创建元素全部为 1 的数组:

1>>> np.ones(3)
2array([1., 1., 1.])

创建未初始化的数组:

1>>> np.empty((2, 2))
2array([[4.9e-324, 9.9e-324],
3       [1.5e-323, 2.0e-323]])

创建等间隔的数组:

1>>> np.arange(4)
2array([0, 1, 2, 3])
3>>> np.arange(0, 100, step=5) # step 表示步长
4array([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80,
5       85, 90, 95])

创建线性分布的数组:

1>>> np.linspace(0, 10, num=5) # num 表示元素个数
2array([ 0. ,  2.5,  5. ,  7.5, 10. ])

多维数组默认的元素类型为 np.float64,可在上述函数中使用 dtype 关键字参数来显式指定元素类型:

1>>> np.arange(5, dtype=np.int64)
2array([0, 1, 2, 3, 4])
3>>> np.arange(5, dtype=np.float32)
4array([0., 1., 2., 3., 4.])

数组信息

下面列出了多维数组的部分属性:

属性 描述
ndarray.ndim 多维数组维度(轴)个数
ndarray.size 多维数组元素个数
ndarray.shape 多维数组形状
ndarray.dtype 元素类型

代码实例:

 1>>> a = np.array([[[0, 1, 2, 3],
 2...               [4, 5, 6, 7]],
 3...
 4...               [[0, 1, 2, 3],
 5...               [4, 5, 6, 7]],
 6...               
 7...               [[0 ,1 ,2, 3],
 8...               [4, 5, 6, 7]]])
 9>>> a.ndim
103
11>>> a.size
1224
13>>> a.shape
14(3, 2, 4)
15>>> a.dtype
16dtype('int64')

总结

  • NumPy 是一个 Python 语言的第三方库,实现了高效的多维数组数据结构并提供了丰富的数学函数库。
  • NumPy 中最核心的数据结构为多维数组(n-dimensional array, ndarray),相应的类为 numpy.ndarray ,该类可以同时用于表示标量、向量、矩阵和张量。

参考资料

  1. NumPy - Wikipedia

  2. NumPy: the absolute basics for beginners — NumPy v1.23 Manual

下一页
上一页

相关