NumPy 入门教程
NumPy 是一个非常流行的 Python 数值计算库,它可以帮助我们处理向量、矩阵等数学对象,还提供了大量的数学函数和工具函数。
安装
在使用 NumPy 之前,需要先安装它。可以使用以下命令来安装:
pip install numpy
数组创建与操作
创建数组是 NumPy 最基本的操作。可以使用 numpy.array()
函数来创建一个数组:
import numpy as np
a = 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]) # 1
print(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 np
a = 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] = 0
print(a) # [0 2 3]
print(b) # [0 2 3]
c = np.copy(a)
c[1] = 0
print(a) # [0 2 3]
print(c) # [0 0 3]
还有一种特殊的数组视图,即切片得到的数组。这种数组只是原数组的一个引用,并不是副本,因此也会导致修改原数组的值:
a = np.array([1, 2, 3])
b = a[1:2]
b[0] = 0
print(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 技能。
希望能帮助大家更好地使用这个强大的数学工具库。