import numpy as np
# 创建一个简单的 2x3 矩阵
= np.array([[1, 2, 3],
matrix_A 4, 5, 6]])
[
print("矩阵 A:")
print(matrix_A)
# 查看矩阵的形状(行数和列数)
print("\n矩阵的形状:")
print(matrix_A.shape)
矩阵 A:
[[1 2 3]
[4 5 6]]
矩阵的形状:
(2, 3)
矩阵是一个按照长方形阵列排列的数字集合。它由行(横向)和列(纵向)组成。例如,一个 2×3 的矩阵表示这个矩阵有 2 行 3 列。
矩阵的表示方式:
\[ \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{bmatrix} \]
其中,\(a_{ij}\) 表示第 i 行第 j 列的元素。
在 NumPy 中,我们可以使用 array
函数来创建矩阵:
import numpy as np
# 创建一个简单的 2x3 矩阵
= np.array([[1, 2, 3],
matrix_A 4, 5, 6]])
[
print("矩阵 A:")
print(matrix_A)
# 查看矩阵的形状(行数和列数)
print("\n矩阵的形状:")
print(matrix_A.shape)
矩阵 A:
[[1 2 3]
[4 5 6]]
矩阵的形状:
(2, 3)
矩阵的基本运算包括加法、减法和乘法。让我们通过例子来理解:
# 创建两个 2x2 矩阵
= np.array([[1, 2],
A 3, 4]])
[
= np.array([[5, 6],
B 7, 8]])
[
print("矩阵 A:")
print(A)
print("\n矩阵 B:")
print(B)
# 矩阵加法:对应位置的元素相加
print("\n矩阵加法 A + B:")
print(A + B)
# 矩阵减法:对应位置的元素相减
print("\n矩阵减法 A - B:")
print(A - B)
# 矩阵乘法:使用 np.dot 或 @
print("\n矩阵乘法 A × B:")
print(np.dot(A, B))
矩阵 A:
[[1 2]
[3 4]]
矩阵 B:
[[5 6]
[7 8]]
矩阵加法 A + B:
[[ 6 8]
[10 12]]
矩阵减法 A - B:
[[-4 -4]
[-4 -4]]
矩阵乘法 A × B:
[[19 22]
[43 50]]
例如,对于 2×2 矩阵相乘: \[ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \times \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} \\ a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} \end{bmatrix} \]
# 创建单位矩阵
= np.eye(2)
I print("2×2 单位矩阵:")
print(I)
# 创建零矩阵
= np.zeros((2, 3))
Z print("\n2×3 零矩阵:")
print(Z)
2×2 单位矩阵:
[[1. 0.]
[0. 1.]]
2×3 零矩阵:
[[0. 0. 0.]
[0. 0. 0.]]
在NumPy中,我们可以使用reshape
函数来改变矩阵的形状,只要保证元素总数不变:
# 创建一个1维数组
= np.array([1, 2, 3, 4, 5, 6])
array_1d print("原始数组:")
print(array_1d)
# 将1维数组重塑为2x3矩阵
= array_1d.reshape(2, 3)
matrix_2x3 print("\n重塑为2x3矩阵:")
print(matrix_2x3)
# 将2x3矩阵重塑为3x2矩阵
= matrix_2x3.reshape(3, 2)
matrix_3x2 print("\n重塑为3x2矩阵:")
print(matrix_3x2)
原始数组:
[1 2 3 4 5 6]
重塑为2x3矩阵:
[[1 2 3]
[4 5 6]]
重塑为3x2矩阵:
[[1 2]
[3 4]
[5 6]]
NumPy的diag
函数有两个主要用途: 1. 从一维数组创建对角矩阵 2. 提取矩阵的对角线元素
# 从一维数组创建对角矩阵
= np.array([1, 2, 3])
diagonal_elements = np.diag(diagonal_elements)
diagonal_matrix print("从数组创建的对角矩阵:")
print(diagonal_matrix)
# 从矩阵中提取对角线元素
= np.array([[1, 2, 3],
matrix 4, 5, 6],
[7, 8, 9]])
[= np.diag(matrix)
diagonal print("\n矩阵的对角线元素:")
print(diagonal)
从数组创建的对角矩阵:
[[1 0 0]
[0 2 0]
[0 0 3]]
矩阵的对角线元素:
[1 5 9]
prod
函数用于计算数组或矩阵中元素的乘积:
# 创建一个2x3矩阵
= np.array([[1, 2, 3],
matrix 4, 5, 6]])
[print("原始矩阵:")
print(matrix)
# 计算所有元素的乘积
= np.prod(matrix)
total_prod print("\n所有元素的乘积:")
print(total_prod)
# 按行计算乘积(axis=1)
= np.prod(matrix, axis=1)
row_prod print("\n每行元素的乘积:")
print(row_prod)
# 按列计算乘积(axis=0)
= np.prod(matrix, axis=0)
col_prod print("\n每列元素的乘积:")
print(col_prod)
原始矩阵:
[[1 2 3]
[4 5 6]]
所有元素的乘积:
720
每行元素的乘积:
[ 6 120]
每列元素的乘积:
[ 4 10 18]
这些高级操作在数据处理和科学计算中非常有用:
reshape
常用于调整数据的维度,特别是在机器学习中准备输入数据时diag
在线性代数计算中经常使用,例如计算特征值和特征向量prod
在统计分析中用于计算几何平均数或累积回报率