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.]
廣告