📜  NumPy - 算术运算(1)

📅  最后修改于: 2023-12-03 15:03:18.475000             🧑  作者: Mango

NumPy - 算术运算

NumPy是Python中的一个科学计算库,提供了高效的数组操作功能。在NumPy中进行算术运算时,可以利用广播机制(Broadcasting)对不同形状的数组进行操作,为科学计算提供了便利。

在本文中,我们将介绍NumPy中的算术运算,包括基本的数学运算、矩阵运算、数组比较以及更高级的操作。

基本的数学运算

NumPy中的基本数学运算包括加、减、乘、除、取模、幂等运算,可以用于对数组进行元素级别的操作。

import numpy as np

# 创建ndarray对象
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])

# 加法
print("a + b = ", a + b)

# 减法
print("b - a = ", b - a)

# 乘法
print("a * b = ", a * b)

# 除法
print("b / a = ", b / a)

# 取模
print("b % a = ", b % a)

# 幂运算
print("b ** 2 = ", b ** 2)

输出:

a + b =  [11 22 33 44]
b - a =  [ 9 18 27 36]
a * b =  [ 10  40  90 160]
b / a =  [10. 10. 10. 10.]
b % a =  [0 0 0 0]
b ** 2 =  [ 100  400  900 1600]
矩阵运算

NumPy中可以使用矩阵运算,包括点乘、矩阵乘法等操作。这些运算需要使用NumPy中的matmul()函数进行操作。

import numpy as np

# 创建ndarray对象
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

# 点乘
print("a * b = ", np.multiply(a, b))

# 矩阵乘法
print("a @ b = ", a @ b)
print("a.dot(b) = ", a.dot(b))
print("np.matmul(a, b) = ", np.matmul(a, b))

输出:

a * b =  [[ 5 12]
 [21 32]]
a @ b =  [[19 22]
 [43 50]]
a.dot(b) =  [[19 22]
 [43 50]]
np.matmul(a, b) =  [[19 22]
 [43 50]]
数组比较

NumPy中可以对数组进行比较操作,包括大于、小于、等于、逻辑与、逻辑或等操作。

import numpy as np

# 创建ndarray对象
a = np.array([1, 2, 3, 4])
b = np.array([2, 2, 4, 4])

# 大于
print("a > b = ", a > b)

# 小于
print("a < b = ", a < b)

# 等于
print("a == b = ", a == b)

# 非等于
print("a != b = ", a != b)

# 逻辑与
print("(a > 2) & (b < 4) = ", (a > 2) & (b < 4))

# 逻辑或
print("(a > 2) | (b < 4) = ", (a > 2) | (b < 4))

输出:

a > b =  [False False False False]
a < b =  [ True False  True False]
a == b =  [False  True False  True]
a != b =  [ True False  True False]
(a > 2) & (b < 4) =  [False False False False]
(a > 2) | (b < 4) =  [ True False  True  True]
更高级的操作

NumPy中还包括更高级别的数学操作,包括傅里叶变换、矩阵求逆、排序等等。

import numpy as np

# 傅里叶变换
a = np.array([1, 2, 3, 4])
print("np.fft.fft(a) = ", np.fft.fft(a))

# 矩阵求逆
a = np.array([[1, 2], [3, 4]])
print("np.linalg.inv(a) = ", np.linalg.inv(a))

# 排序
a = np.array([3, 1, 4, 2])
print("np.sort(a) = ", np.sort(a))

输出:

np.fft.fft(a) =  [10.-0.j -2.+2.j -2.-0.j -2.-2.j]
np.linalg.inv(a) =  [[-2.   1. ]
 [ 1.5 -0.5]]
np.sort(a) =  [1 2 3 4]

我们可以看到NumPy提供了丰富的数学函数和运算符,可以让我们更方便的进行数学计算和科学运算。