概述
NumPy 是 Python 中用于科学计算的强大库,提供了多维数组对象和大量用于数组操作的函数。本文将详细介绍 NumPy 中的一些常见操作和数学函数,并通过具体的代码示例来展示每个步骤。
环境准备
确保已经安装了 NumPy 库。可以使用以下命令安装:
pip install numpy
代码详解
import numpy as np
# 创建一个一维数组
a1 = np.array([1, 2, 3, 4])
# 计算 2 的 a1 次方
np.exp2(a1)
# 计算 3 的 a1 次方
np.power(3, a1)
# 计算 a1 的对数(以 10 为底)
np.log10(a1)
# 打印 a1
print(f"a1 = {a1}")
# 将 a1 重塑为 2x2 的二维数组
a2 = a1.reshape((2, 2))
# 计算 a2 的转置
a3 = a2.T
# 打印 a2 和 a3
print(f"a2 = {a2}\n"
f"a3 = {a3}\n"
f"加法 :a2 + a3 = {a2 + a3}\n"
f"矩阵乘 a2.dot(a3) = {a2.dot(a3)}\n"
f"乘法:a2 * a3 = {a2 * a3}\n"
f"矩阵的逆:np.linalg.inv(a2) = {np.linalg.inv(a2)}\n"
f"a2.dot(np.linalg.inv(a2)) = {a2.dot(np.linalg.inv(a2))}\n"
f"矩阵的伪逆:np.linalg.pinv(a2) = {np.linalg.pinv(a2)}\n"
)
代码解析
1. 导入 NumPy 库
import numpy as np
import numpy as np
:导入 NumPy 库,并将其别名为np
,以便后续使用。
2. 创建一个一维数组
a1 = np.array([1, 2, 3, 4])
a1 = np.array([1, 2, 3, 4])
:创建一个一维数组a1
,包含元素[1, 2, 3, 4]
。
3. 计算 2 的 a1 次方
np.exp2(a1)
np.exp2(a1)
:计算 2 的a1
次方,即2^1, 2^2, 2^3, 2^4
。
4. 计算 3 的 a1 次方
np.power(3, a1)
np.power(3, a1)
:计算 3 的a1
次方,即3^1, 3^2, 3^3, 3^4
。
5. 计算 a1 的对数(以 10 为底)
np.log10(a1)
np.log10(a1)
:计算a1
的对数(以 10 为底),即log10(1), log10(2), log10(3), log10(4)
。
6. 打印 a1
print(f"a1 = {a1}")
print(f"a1 = {a1}")
:打印数组a1
。
7. 将 a1 重塑为 2x2 的二维数组
a2 = a1.reshape((2, 2))
a2 = a1.reshape((2, 2))
:将a1
重塑为 2x2 的二维数组a2
。
8. 计算 a2 的转置
a3 = a2.T
a3 = a2.T
:计算a2
的转置,得到a3
。
9. 打印 a2 和 a3
print(f"a2 = {a2}\n"
f"a3 = {a3}\n"
f"加法 :a2 + a3 = {a2 + a3}\n"
f"矩阵乘 a2.dot(a3) = {a2.dot(a3)}\n"
f"乘法:a2 * a3 = {a2 * a3}\n"
f"矩阵的逆:np.linalg.inv(a2) = {np.linalg.inv(a2)}\n"
f"a2.dot(np.linalg.inv(a2)) = {a2.dot(np.linalg.inv(a2))}\n"
f"矩阵的伪逆:np.linalg.pinv(a2) = {np.linalg.pinv(a2)}\n"
)
print(f"a2 = {a2}\n")
:打印二维数组a2
。print(f"a3 = {a3}\n")
:打印a2
的转置a3
。print(f"加法 :a2 + a3 = {a2 + a3}\n")
:计算并打印a2
和a3
的逐元素加法。print(f"矩阵乘 a2.dot(a3) = {a2.dot(a3)}\n")
:计算并打印a2
和a3
的矩阵乘法。print(f"乘法:a2 * a3 = {a2 * a3}\n")
:计算并打印a2
和a3
的逐元素乘法。print(f"矩阵的逆:np.linalg.inv(a2) = {np.linalg.inv(a2)}\n")
:计算并打印a2
的逆矩阵。print(f"a2.dot(np.linalg.inv(a2)) = {a2.dot(np.linalg.inv(a2))}\n")
:计算并打印a2
和其逆矩阵的乘积。print(f"矩阵的伪逆:np.linalg.pinv(a2) = {np.linalg.pinv(a2)}\n")
:计算并打印a2
的伪逆矩阵。
示例输出
假设运行上述代码,输出结果如下:
a1 = [1 2 3 4]
a2 = [[1 2]
[3 4]]
a3 = [[1 3]
[2 4]]
加法 :a2 + a3 = [[2 5]
[5 8]]
矩阵乘 a2.dot(a3) = [[ 5 11]
[11 25]]
乘法:a2 * a3 = [[1 6]
[6 16]]
矩阵的逆:np.linalg.inv(a2) = [[-2. 1. ]
[ 1.5 -0.5]]
a2.dot(np.linalg.inv(a2)) = [[1.00000000e+00 0.00000000e+00]
[8.88178420e-16 1.00000000e+00]]
矩阵的伪逆:np.linalg.pinv(a2) = [[-2. 1. ]
[ 1.5 -0.5]]