> 文章列表 > NumPy 入门教程

NumPy 入门教程

NumPy 入门教程

文章目录

  • NumPy 入门教程
    • 安装
    • 数组创建与操作
    • 数组索引与切片
    • 数组运算
    • 多维数组的创建与操作
    • 数组的形状和大小
    • 数组的广播
    • 数组的复制和视图
    • 矩阵运算
    • 总结

NumPy 入门教程

NumPy 是一个非常流行的 Python 数值计算库,它可以帮助我们处理向量、矩阵等数学对象,还提供了大量的数学函数和工具函数。

安装

在使用 NumPy 之前,需要先安装它。可以使用以下命令来安装:

pip install numpy

数组创建与操作

创建数组是 NumPy 最基本的操作。可以使用 numpy.array() 函数来创建一个数组:

import numpy as npa = np.array([1, 2, 3])
print(a)

输出:

[1 2 3]

可以使用 numpy.zeros() 函数和 numpy.ones() 函数来创建全零和全一数组:

zeros = np.zeros((2, 3))
print(zeros)ones = np.ones((2, 3))
print(ones)

输出:

[[0. 0. 0.][0. 0. 0.]][[1. 1. 1.][1. 1. 1.]]

可以使用 numpy.arange() 函数来创建指定间隔的一维数组:

a = np.arange(0, 10, 2)
print(a)

输出:

[0 2 4 6 8]

可以使用数组的各种方法来操作数组,比如:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])c = np.concatenate([a, b])
print(c)d = np.vstack([a, b])
print(d)

输出:

[1 2 3 4 5 6][[1 2 3][4 5 6]]

数组索引与切片

NumPy 中也可以使用索引和切片来访问数组中的元素:

a = np.array([1, 2, 3, 4, 5])print(a[0]) # 1print(a[1:4]) # [2 3 4]a[2:4] = 0
print(a) # [1 2 0 0 5]

数组运算

NumPy 提供了许多数组运算的函数,例如:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])print(a + b) # [5 7 9]print(a - b) # [-3 -3 -3]print(a * b) # [4 10 18]print(a / b) # [0.25 0.4 0.5]print(np.dot(a, b)) # 点积 32

多维数组的创建与操作

除了一维数组之外,NumPy 还支持多维数组的创建和操作。可以使用 numpy.array() 函数来创建一个多维数组:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6]])
print(a)

输出:

[[1 2 3][4 5 6]]

可以使用 numpy.zeros() 函数和 numpy.ones() 函数来创建全零和全一多维数组:

zeros = np.zeros((2, 3, 4)) # 三维数组
print(zeros)ones = np.ones((2, 3, 4)) # 三维数组
print(ones)

输出:

[[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]][[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]][[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]]

可以使用数组的各种方法和操作函数来操作多维数组:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])c = np.concatenate([a, b], axis=1)
print(c)d = np.vstack([a, b])
e = np.sum(d, axis=0)
print(e)

输出:

[[ 1  2  3  7  8  9][ 4  5  6 10 11 12]][22 26 30]

数组的形状和大小

我们通常需要了解数组的形状和大小,可以使用 numpy.shape() 函数和 numpy.size() 函数来查询这些信息:

a = np.array([[1, 2, 3], [4, 5, 6]])
print(np.shape(a)) # (2, 3)print(np.size(a)) # 6

数组的广播

广播是一种特殊的数组运算,它可以让不同形状的数组进行运算,比如:

a = np.array([1, 2, 3])
b = np.array([[1], [2], [3]])print(a + b)

输出:

[[2 3 4][3 4 5][4 5 6]]

数组的复制和视图

在 NumPy 中,数组的赋值默认是引用,即两个变量指向同一个数组,因此修改其中一个变量的值会影响到另一个变量。可以使用 numpy.copy() 函数来创建一个数组的副本,这样就不会影响原数组了:

a = np.array([1, 2, 3])
b = a
b[0] = 0print(a) # [0 2 3]
print(b) # [0 2 3]c = np.copy(a)
c[1] = 0print(a) # [0 2 3]
print(c) # [0 0 3]

还有一种特殊的数组视图,即切片得到的数组。这种数组只是原数组的一个引用,并不是副本,因此也会导致修改原数组的值:

a = np.array([1, 2, 3])
b = a[1:2]
b[0] = 0print(a) # [1 0 3]
print(b) # [0]

矩阵运算

在 NumPy 中,还有矩阵相关的运算,比如逆矩阵、特征值等等。可以使用 numpy.linalg 模块来进行矩阵运算:

a = np.array([[1, 2], [3, 4]])
b = np.linalg.inv(a)print(b)e, v = np.linalg.eig(a)
print(e)
print(v)

输出:

[[-2.   1. ][ 1.5 -0.5]][-0.37228132+0.j  5.37228132+0.j][[-0.82456484 -0.41597356][ 0.56576746 -0.90937671]]

总结

这是一个简短的 NumPy 入门教程,通过学习这些基本的操作和函数,可以进一步学习和掌握更多高级的 NumPy 技能。

希望能帮助大家更好地使用这个强大的数学工具库。

网页前端