在数据处理和科学计算中,NumPy 是一个非常强大且基础的库。除了基本的创建数组功能之外,NumPy 提供了许多强大的函数和方法,用于执行高级的矩阵运算、统计分析、逻辑操作等。以下是一些常用且非常有用的 NumPy 指令,涵盖了创建数组、操作数组、数学运算、矩阵操作等方面。
NumPy 常用指令
1. 创建数组
-
array()
:从列表或元组创建一个 NumPy 数组。arr = np.array([1, 2, 3]) print(arr) # 输出:[1 2 3]
-
zeros()
:创建一个全零数组。zeros_arr = np.zeros((3, 3)) print(zeros_arr)
-
ones()
:创建一个全一数组。ones_arr = np.ones((2, 3)) print(ones_arr)
-
empty()
:创建一个空数组(未初始化,包含任意值)。empty_arr = np.empty((2, 2)) print(empty_arr)
-
arange()
:生成等差数列。arange_arr = np.arange(0, 10, 2) print(arange_arr) # 输出:[0 2 4 6 8]
-
linspace()
:生成在指定范围内均匀分布的值。lin_arr = np.linspace(0, 1, 5) print(lin_arr) # 输出:[0. 0.25 0.5 0.75 1. ]
-
eye()
:创建单位矩阵(对角线为 1,其余元素为 0)。identity_matrix = np.eye(3) print(identity_matrix)
2. 数学运算
-
sum()
:计算数组元素的和。arr = np.array([1, 2, 3, 4]) print(np.sum(arr)) # 输出:10
-
mean()
:计算数组元素的平均值。print(np.mean(arr)) # 输出:2.5
-
std()
:计算数组元素的标准差。print(np.std(arr)) # 输出:1.118033988749895
-
min()
和max()
:找出数组中的最小值和最大值。print(np.min(arr)) # 输出:1 print(np.max(arr)) # 输出:4
-
prod()
:计算数组所有元素的乘积。print(np.prod(arr)) # 输出:24
3. 数组操作
-
reshape()
:改变数组的形状,而不改变其数据。arr = np.array([1, 2, 3, 4, 5, 6]) reshaped_arr = arr.reshape(2, 3) # 变成 2 行 3 列 print(reshaped_arr)
-
transpose()
:转置矩阵。matrix = np.array([[1, 2, 3], [4, 5, 6]]) transposed_matrix = matrix.transpose() print(transposed_matrix)
-
flatten()
:将多维数组展平成一维数组。flat_arr = reshaped_arr.flatten() print(flat_arr) # 输出:[1 2 3 4 5 6]
-
concatenate()
:连接两个或多个数组。arr1 = np.array([1, 2]) arr2 = np.array([3, 4]) concatenated = np.concatenate((arr1, arr2)) print(concatenated) # 输出:[1 2 3 4]
-
split()
:将数组分割成多个子数组。split_arr = np.split(arr, 3) print(split_arr) # 输出:[array([1, 2]), array([3, 4]), array([5, 6])]
4. 逻辑与条件运算
-
where()
:根据条件返回数组中的元素。arr = np.array([1, 2, 3, 4, 5]) result = np.where(arr > 3, '大于 3', '小于等于 3') print(result) # 输出:['小于等于 3' '小于等于 3' '小于等于 3' '大于 3' '大于 3']
-
all()
和any()
:检查数组中是否所有元素为 True,或是否有任一元素为 True。bool_arr = np.array([True, False, True]) print(np.all(bool_arr)) # 输出:False print(np.any(bool_arr)) # 输出:True
5. 随机数生成
-
random.rand()
:生成 0 到 1 之间的均匀分布随机数。rand_arr = np.random.rand(2, 2) print(rand_arr)
-
random.randn()
:生成服从标准正态分布的随机数。randn_arr = np.random.randn(2, 3) print(randn_arr)
-
random.randint()
:生成指定范围内的随机整数。randint_arr = np.random.randint(0, 10, size=(3, 3)) print(randint_arr)
6. 广播机制
NumPy 支持不同形状的数组之间进行算术运算,这是 NumPy 的广播机制。
7. 矩阵运算
-
dot()
:进行矩阵乘法运算。mat1 = np.array([[1, 2], [3, 4]]) mat2 = np.array([[5, 6], [7, 8]]) result = np.dot(mat1, mat2) print(result) # 输出:[[19 22] [43 50]]
-
inv()
:计算矩阵的逆(需要linalg
模块)。from numpy.linalg import inv matrix = np.array([[1, 2], [3, 4]]) inverse_matrix = inv(matrix) print(inverse_matrix)
-
det()
:计算矩阵的行列式。from numpy.linalg import det determinant = det(matrix) print(determinant)
-
eig()
:计算矩阵的特征值和特征向量。from numpy.linalg import eig values, vectors = eig(matrix) print("特征值:", values) print("特征向量:", vectors)
结论
NumPy 是 Python 科学计算的核心库之一,其功能远不止创建数组和基本的数学运算。通过上述指令,你可以高效地进行数组操作、矩阵运算、随机数生成以及逻辑运算等。对于需要处理大量数据的项目,掌握 NumPy 的这些强大功能,可以显著提升程序的性能和开发效率。