Numpy 线性代数

线性代数处理与线性方程及其矩阵表示相关的数学概念。

NumPy 为我们提供了执行常见线性代数任务的函数,例如数组乘法、求解线性方程组等。


NumPy 线性代数函数

以下是 NumPy 中用于执行线性代数任务的各种函数列表。

运算符 描述
dot() 计算两个数组的乘积
inner() 计算数组的内积
outer() 计算数组的外积
det() 计算矩阵的行列式
solve() 求解线性矩阵方程
inv() 计算矩阵的乘法逆
trace() 计算对角线元素的和

NumPy dot() 函数

我们可以使用 NumPy 线性代数模块中提供的 dot() 函数来计算两个数组的乘积。例如,

import numpy as np

array1 = np.array([1, 3, 5])
array2 = np.array([2, 4, 6])

# use of dot() to perform array multiplication
result = np.dot(array1, array2)

print(result)

# Output: 44

在此示例中,dot(array1, array2) 函数计算 array1array2 的点积,即 1*2 + 3*4 + 5*6 = 44


NumPy inner() 函数

在 NumPy 中,inner() 函数计算两个数组的内积,即它们对应元素的乘积之和。

让我们看一个使用 2D 数组的 inner() 示例。

import numpy as np

array1 = np.array([[1, 3], 
                   [5, 7]])
array2 = np.array([[2, 4], 
                   [6, 8]])

# inner() for 2D arrays
result = np.inner(array1, array2)

print(result)

输出

[[14 30]
 [38 86]]

在上面的示例中,inner() 首先将 2D 数组展平为 1D 数组,然后计算这些展平数组的内积。

生成的 2x2 矩阵是展平结果的重塑版本。

这里,内积计算如下:

1*2+3*4        1*6+3*8
5*2+7*4        5*6+7*8

注意: 对于 1D 数组,inner() 等同于 dot()


NumPy outer() 函数

NumPy 中的 outer() 函数计算两个数组的外积,即它们所有可能元素对的乘积。

让我们看一个例子。

import numpy as np

array1 = np.array([1, 3, 5])
array2 = np.array([2, 4, 6])

# outer() to perform outer multiplication
result = np.outer(array1, array2)

print(result)

输出

[[ 2  4  6]
 [ 6 12 18]
 [10 20 30]]

这里,外积计算如下:

1*2      1*4       1*6        
3*2      3*4       3*6
5*2      5*4       5*6

NumPy det() 函数

在 NumPy 中,我们使用 NumPy linalg 模块中的 det() 函数来计算方阵的行列式。例如,

import numpy as np

# define a square matrix
array1 = np.array([[1, 3], 
                  [5, 7]])

# compute the determinant of array1
result = np.linalg.det(array1)


print(result)
 
# Output: -7.9999999

在这里,我们使用 linalg 模块中的 det() 函数来计算名为 array1 的方阵的行列式。


NumPy solve() 函数

在 NumPy 中,我们使用 solve() 函数来求解线性方程组。

对于给定的矩阵 A 和向量 bsolve(A, b) 找到满足方程 Ax = b 的解向量 x

让我们看一个例子。

import numpy as np

# define the coefficient matrix A
A = np.array([[2, 4], 
             [6, 8]])

# define the constant vector b
b = np.array([5, 6])

# solve the system of linear equations Ax = b
x = np.linalg.solve(A, b)

print(x)

# Output: [-2.  2.25]

在此示例中,我们使用 linalg 模块中的 solve() 函数来求解线性方程组。

这里,输出是 [-2. 2.25],这是线性方程组 2x + 4y = 56x + 8y = 6 的解。

注意solve() 函数仅适用于方阵,并且假定矩阵 A 的行列式非零,否则 solve() 将引发 LinAlgError 异常。


NumPy inv() 函数

我们在 NumPy 中使用 linalg 模块中的 inv() 函数来查找方阵的逆。例如,

import numpy as np

# define a 2x2 matrix
array1 = np.array([[2, 4], 
                  [6, 8]])

# compute the inverse of the matrix
result = np.linalg.inv(array1)

print(result)

输出

[[-1.    0.5 ]
 [ 0.75 -0.25]]

在这里,我们使用 linalg.inv() 函数来计算 array1 矩阵的逆。

注意:并非所有矩阵都是可逆的,如果您尝试计算行列式为零的矩阵的逆,inv() 将引发 LinAlgError 异常。


NumPy trace() 函数

在 NumPy 中,我们使用 trace() 函数来计算矩阵对角线元素的和。例如,

import numpy as np

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

# compute the trace of the matrix
result = np.trace(array1)

print(result)

# Output: 12

在此示例中,矩阵的对角线元素为 624,因此这些元素的和为 12。因此,trace() 函数将此值作为输出返回。

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

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

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