NumPy - 算术运算



NumPy 算术运算

NumPy 使得对数组执行算术运算变得简单易行。使用 NumPy,您可以对整个数组执行逐元素的加、减、乘、除运算,这意味着一个数组中的每个元素都由另一个数组中的对应元素进行运算。

当对不同形状的数组执行算术运算时,NumPy 使用称为广播的功能。它会自动调整数组的形状,以便可以执行运算,根据需要将较小的数组扩展到较大的数组。

基本的 NumPy 算术运算

NumPy 提供了几种在数组上逐元素执行的算术运算。这些包括加法、减法、乘法、除法和乘方。

NumPy 数组加法

NumPy 中的加法是逐元素进行的。当添加两个相同形状的数组时,会将对应的元素相加。当数组形状不同时,将应用广播规则。

import numpy as np

# Creating two arrays
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# Adding arrays
result = a + b
print(result)

以下是获得的输出:

[5 7 9]

NumPy 数组减法

NumPy 中的减法也是逐元素进行的。减去两个相同形状的数组将返回一个数组,其中每个元素都是输入数组中对应元素的差。

import numpy as np

# Creating two arrays
a = np.array([10, 20, 30])
b = np.array([1, 2, 3])

# Subtracting arrays
result = a - b
print(result)

这将产生以下结果:

[ 9 18 27]

NumPy 数组乘法

逐元素乘法使用 NumPy 中的 * 运算符执行。当乘以数组时,第一个数组的每个元素都乘以第二个数组中的对应元素。

import numpy as np

# Creating two arrays
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# Multiplying arrays
result = a * b
print(result)

以下是上述代码的输出:

[ 4 10 18]

NumPy 数组除法

使用 NumPy 中的 / 运算符执行逐元素除法。它返回一个数组,其中每个元素都是输入数组中对应元素的商。

import numpy as np

# Creating two arrays
a = np.array([10, 20, 30])
b = np.array([1, 2, 5])

# Dividing arrays
result = a / b
print(result)

获得的输出如下所示:

[10. 10.  6.]

NumPy 数组乘方运算

使用 NumPy 中的 ** 运算符逐元素执行乘方运算。基数组的每个元素都将提升到指数数组中对应元素的幂。

import numpy as np

# Creating two arrays
a = np.array([2, 3, 4])
b = np.array([1, 2, 3])

# Applying power operation
result = a ** b
print(result)

执行上述代码后,我们将获得以下输出:

[ 2  9 64]

我们还可以使用 numpy.power() 函数将数组的元素提升到指定的幂。此函数将第一个输入数组中的元素视为基数,并返回其提升到第二个输入数组中对应元素的幂的结果。

import numpy as np 
a = np.array([10,100,1000]) 

print ('Our array is:')
print (a)
print ('\n')

print ('Applying power function:')
print (np.power(a,2))
print ('\n') 

print ('Second array:')
b = np.array([1,2,3]) 
print (b) 
print ('\n') 

print ('Applying power function again:')
print (np.power(a,b))

它将产生以下输出:

Our array is:
[  10  100 1000]

Applying power function:
[    100   10000 1000000]

Second array:
[1 2 3]

Applying power function again:
[       10      10000 1000000000]

高级 NumPy 算术运算

NumPy 中的高级算术运算包括模运算、地板除法和乘方运算。这些运算处理更复杂的数学任务,并且与基本算术运算类似,都是逐元素执行的,但具有用于模算术和幂运算的附加功能。

NumPy 模运算

使用 NumPy 中的 % 运算符执行模运算。当应用于数组时,它会逐元素操作,这意味着第一个数组的每个元素都除以第二个数组中的对应元素,并计算余数。

import numpy as np

# Creating two arrays
a = np.array([10, 20, 30])
b = np.array([3, 7, 8])

# Applying modulo operation
result = a % b
print(result)

产生的结果如下:

[1 6 6]

我们还可以使用 numpy.mod() 函数计算两个数组之间或数组与标量之间的逐元素除法余数(模运算)。

此函数返回一个数组除以另一个数组或标量时的余数,对每个元素应用模运算。

import numpy as np 
a = np.array([10,20,30]) 
b = np.array([3,5,7]) 

print ('First array:')
print (a)
print ('\n')  

print ('Second array:') 
print (b) 
print ('\n') 

print ('Applying mod() function:')
print (np.mod(a,b))
print ('\n')

print ('Applying remainder() function:') 
print (np.remainder(a,b)) 

以下是上述代码的输出:

First array:                                                                  
[10 20 30]

Second array:                                                                 
[3 5 7]

Applying mod() function:                                                      
[1 0 2]

Applying remainder() function:                                                
[1 0 2]

NumPy 地板除法

NumPy 中的地板除法使用 // 运算符逐元素执行。它返回小于或等于除法结果的最大整数。

import numpy as np

# Creating two arrays
a = np.array([10, 20, 30])
b = np.array([3, 7, 8])

# Applying floor division
result = a // b
print(result)

我们得到如下所示的输出:

[3 2 3]

NumPy 具有广播功能的算术运算

广播允许 NumPy 通过虚拟扩展较小的数组以匹配较大数组的形状来对不同形状的数组执行算术运算。

NumPy 中的标量和数组运算

当标量与数组一起使用时,广播会扩展标量以匹配数组的形状,从而允许逐元素运算。

import numpy as np

# Creating an array
a = np.array([[1, 2, 3], [4, 5, 6]])

# Scalar value
scalar = 10

# Adding scalar to array
result = a + scalar
print(result)

以下是获得的输出:

[[11 12 13]
 [14 15 16]]

NumPy 中不同形状的数组

当 NumPy 中使用两个不同形状的数组时,广播会根据广播规则对齐它们的形状。

import numpy as np

# Creating arrays with different shapes
a = np.array([[1, 2, 3], [4, 5, 6]])  
b = np.array([10, 20, 30])  

# Adding arrays
result = a + b
print(result)

这将产生以下结果:

[[11 22 33]
 [14 25 36]]

NumPy 聚合函数

NumPy 中的聚合函数执行数组上的求和、平均值、最小值和最大值等运算,通常使用广播来处理不同形状的数组。

NumPy 求和运算

NumPy 求和运算计算指定轴上或整个数组上(如果未指定轴)的数组元素之和。

import numpy as np

# Creating an array
a = np.array([[1, 2, 3], [4, 5, 6]])

# Summing elements
result = np.sum(a)
print(result)

# Summing along axis 0 (columns)
result_axis0 = np.sum(a, axis=0)
print(result_axis0)

# Summing along axis 1 (rows)
result_axis1 = np.sum(a, axis=1)
print(result_axis1)

以下是上述代码的输出:

21
[5 7 9]
[ 6 15]

NumPy 平均值运算

NumPy 平均值运算计算指定轴上或整个数组上的数组元素的平均值(算术平均值)。

import numpy as np

# Creating an array
a = np.array([[1, 2, 3], [4, 5, 6]])

# Mean of elements
result = np.mean(a)
print(result)

# Mean along axis 0 (columns)
result_axis0 = np.mean(a, axis=0)
print(result_axis0)

# Mean along axis 1 (rows)
result_axis1 = np.mean(a, axis=1)
print(result_axis1)

获得的输出如下所示:

3.5
[2.5 3.5 4.5]
[2. 5.]

NumPy 数组与复数的运算

以下函数用于对包含复数的数组执行运算。

  • numpy.real(): 返回复数类型参数的实部。

  • numpy.imag(): 返回复数类型参数的虚部。

  • numpy.conj(): 返回复共轭,通过改变虚部的符号获得。

  • numpy.angle(): 返回复数参数的角度。该函数具有度数参数。如果为真,则返回以度为单位的角度,否则角度以弧度为单位。

示例

在下面的示例中,我们使用 NumPy 函数:real()、imag()、conj() 和 angle() 对包含复数的数组执行运算。

import numpy as np 
a = np.array([-5.6j, 0.2j, 11. , 1+1j]) 

print ('Our array is:')
print (a)
print ('\n') 

print ('Applying real() function:')
print (np.real(a))
print ('\n')

print ('Applying imag() function:') 
print (np.imag(a))
print ('\n')  

print ('Applying conj() function:') 
print (np.conj(a)) 
print ('\n')  

print ('Applying angle() function:') 
print (np.angle(a)) 
print ('\n') 

print ('Applying angle() function again (result in degrees)') 
print (np.angle(a, deg = True))

它将产生以下输出:

Our array is:
[ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]

Applying real() function:
[ 0. 0. 11. 1.]

Applying imag() function:
[-5.6 0.2 0. 1. ]

Applying conj() function:
[ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]

Applying angle() function:
[-1.57079633 1.57079633 0. 0.78539816]

Applying angle() function again (result in degrees)
[-90. 90. 0. 45.]
广告