NumPy 矩阵操作

矩阵是一种二维数据结构,数字排列成行和列。例如,

NumPy Matrix
矩阵是一种二维数据结构。

上面的矩阵是一个 **3x3**(读作“三乘三”)矩阵,因为它有 **3** 行和 **3** 列。


NumPy 矩阵操作

以下是 NumPy 提供的一些基本矩阵运算。

函数 描述
array() 创建矩阵
dot() 执行矩阵乘法
transpose() 转置矩阵
linalg.inv() 计算矩阵的逆
linalg.det() 计算矩阵的行列式
flatten() 将矩阵转换为一维数组

在 NumPy 中创建矩阵

在 NumPy 中,我们使用 np.array() 函数来创建矩阵。例如,

import numpy as np

# create a 2x2 matrix
matrix1 = np.array([[1, 3], 
                   [5, 7]])

print("2x2 Matrix:\n",matrix1)

# create a 3x3  matrix
matrix2 = np.array([[2, 3, 5],
             	    [7, 14, 21],
                    [1, 3, 5]])
                    
print("\n3x3 Matrix:\n",matrix2)

输出

2x2 Matrix:
[[1 3]
 [5 7]]

3x3 Matrix:
 [[ 2  3  5]
 [ 7 14 21]
 [ 1  3  5]]

在这里,我们分别通过将列表的列表传递给 np.array() 函数,创建了两个矩阵:一个 **2x2** 矩阵和一个 **3x3** 矩阵。


在 NumPy 中执行矩阵乘法

我们使用 np.dot() 函数来执行两个矩阵之间的乘法。

让我们看一个例子。

import numpy as np

# create two matrices
matrix1 = np.array([[1, 3], 
             		[5, 7]])
             
matrix2 = np.array([[2, 6], 
                    [4, 8]])

# calculate the dot product of the two matrices
result = np.dot(matrix1, matrix2)

print("matrix1 x matrix2: \n",result)

输出

matrix1 x matrix2: 
[[14 30]
 [38 86]]

在此示例中,我们使用 np.dot(matrix1, matrix2) 函数对 matrix1matrix2 这两个矩阵执行矩阵乘法。

要了解更多关于矩阵乘法的信息,请访问NumPy 矩阵乘法

注意:只有当矩阵具有相同的维度大小时,我们才能进行点积运算。例如,对于 A = (M x N)B = (N x K),当我们对 C = A . B 进行点积运算时,结果矩阵的大小为 C = (M x K)


转置 NumPy 矩阵

矩阵的转置是一个通过交换行和列得到的新矩阵。对于 2x2 矩阵,

Matrix:
a11    a12    
a21    a22    

Transposed Matrix:
a11    a21
a12    a22

在 NumPy 中,我们可以使用 np.transpose() 函数获得矩阵的转置。例如,

import numpy as np

# create a matrix
matrix1 = np.array([[1, 3], 
             		[5, 7]])

# get transpose of matrix1
result = np.transpose(matrix1)

print(result)

输出

[[1 5]
 [3 7]]

在这里,我们使用 np.transpose(matrix1) 函数来获得 matrix1 的转置。

注意:或者,我们也可以使用 .T 属性来获取矩阵的转置。例如,如果我们用前面的例子中的 matrix1.T,结果将是相同的。


在 NumPy 中计算矩阵的逆

在 NumPy 中,我们使用 np.linalg.inv() 函数来计算给定矩阵的逆。

然而,需要注意的是,并非所有矩阵都有逆。只有行列式非零的方阵才有逆。

现在,让我们使用 np.linalg.inv() 来计算方阵的逆。

import numpy as np

# create a 3x3 square matrix
matrix1 = np.array([[1, 3, 5], 
             		[7, 9, 2],
                    [4, 6, 8]])

# find inverse of matrix1
result = np.linalg.inv(matrix1)

print(result)

输出

[[-1.11111111 -0.11111111  0.72222222]
 [ 0.88888889  0.22222222 -0.61111111]
 [-0.11111111 -0.11111111  0.22222222]]

注意:如果我们尝试找到非方阵的逆,我们会收到一条错误消息:numpy.linalg.linalgerror: Last 2 dimensions of the array must be square(数组的最后两个维度必须是方的)。


在 NumPy 中查找矩阵的行列式

我们可以使用 np.linalg.det() 函数来查找方阵的行列式,以计算给定矩阵的行列式。

假设我们有一个 **2x2** 矩阵 A

a b
c d

所以,一个 **2x2** 矩阵的行列式将是

det(A) = ad - bc

其中 **a, b, c** 和 **d** 是矩阵的元素。

让我们看一个例子。

import numpy as np

# create a matrix
matrix1 = np.array([[1, 2, 3], 
             		[4, 5, 1],
                    [2, 3, 4]])

# find determinant of matrix1
result = np.linalg.det(matrix1)

print(result)

输出

-5.00

在这里,我们使用 np.linalg.det(matrix1) 函数来查找方阵 matrix1 的行列式。


展平 NumPy 矩阵

展平矩阵只是将矩阵转换为一维数组。

要将矩阵展平为一维数组,我们使用 array.flatten() 函数。让我们看一个例子。

import numpy as np

# create a 2x3 matrix
matrix1 = np.array([[1, 2, 3], 
             		[4, 5, 7]])

result = matrix1.flatten()
print("Flattened 2x3 matrix:", result)

输出

Flattened 2x3 matrix: [1 2 3 4 5 7]

在这里,我们使用 matrix1.flatten() 函数将 matrix1 展平成一维数组,而不会丢失其任何元素。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战