NumPy算數運算


NumPy - 算數運算

用於執行算術運算(如add()subtract()multiply()divide())的輸入陣列必須具有相同的形狀或符合陣列廣播規則。

範例

import numpy as np 
a = np.arange(9, dtype = np.float_).reshape(3,3)  
print  '第一個陣列:'  
print a 
print  '\n'  
print  '第二個陣列:' 
b = np.array([10,10,10])  
print b 
print  '\n'  
print  '兩個陣列相加:'  
print np.add(a,b)  
print  '\n'  
print  '兩個陣列相減:'  
print np.subtract(a,b)  
print  '\n'  
print  '兩個陣列相乘:'  
print np.multiply(a,b)  
print  '\n'  
print  '兩個陣列相除:'  
print np.divide(a,b)

輸出如下:

第一個陣列:
[[ 0. 1. 2.]
 [ 3. 4. 5.]
 [ 6. 7. 8.]]

第二個陣列:
[10 10 10]

兩個陣列相加:
[[ 10. 11. 12.]
 [ 13. 14. 15.]
 [ 16. 17. 18.]]

兩個陣列相減:
[[-10. -9. -8.]
 [ -7. -6. -5.]
 [ -4. -3. -2.]]

兩個陣列相乘:
[[ 0. 10. 20.]
 [ 30. 40. 50.]
 [ 60. 70. 80.]]

兩個陣列相除:
[[ 0. 0.1 0.2]
 [ 0.3 0.4 0.5]
 [ 0.6 0.7 0.8]]

讓我們現在來討論 NumPy 中提供的一些其他重要的算術函式。

numpy.reciprocal()

此函式返回引數逐元素的倒數,。 由於 Python 處理整數除法的方式,對於絕對值大於 1 的整數元素,結果始終為 0, 對於整數 0,則發出溢位警告。

範例

import numpy as np 
a = np.array([0.25,  1.33,  1,  0,  100])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 reciprocal 函式:'  
print np.reciprocal(a)  
print  '\n' 
b = np.array([100], dtype =  int)  
print  '第二個陣列:'  
print b 
print  '\n'  
print  '呼叫 reciprocal 函式:'  
print np.reciprocal(b)

輸出如下:

我們的陣列是:                                                               
[   0.25    1.33    1.      0.    100.  ]                                     

呼叫 reciprocal 函式:                                         
main.py:9: RuntimeWarning: divide by zero encountered in reciprocal           
  print np.reciprocal(a)                                                      
[ 4.         0.7518797  1.               inf  0.01     ]                      

第二個陣列:                                                      
[100]                                                                         

呼叫 reciprocal 函式:                                        
[0]

numpy.power()

此函式將第一個輸入陣列中的元素作為底數,計算它與第二個輸入陣列中相應元素的冪。

import numpy as np 
a = np.array([10,100,1000])  
print  '我們的陣列是;'  
print a 
print  '\n'  
print  '呼叫 power 函式:'  
print np.power(a,2)  
print  '\n'  
print  '第二個陣列:' 
b = np.array([1,2,3])  
print b 
print  '\n'  
print  '再次呼叫 power 函式:'  
print np.power(a,b)

輸出如下:

我們的陣列是;                                                              
[  10  100 1000]                                                              

呼叫 power 函式:                                                    
[    100   10000 1000000]                                                     

第二個陣列:                                                              
[1 2 3]                                                                       

再次呼叫 power 函式:                                              
[        10      10000 1000000000]

numpy.mod()

此函式返回輸入陣列中相應元素的除法餘數。 函式numpy.remainder()也產生相同的結果。

import numpy as np 
a = np.array([10,20,30]) 
b = np.array([3,5,7])  
print  '第一個陣列:'  
print a 
print  '\n'  
print  '第二個陣列:'  
print b 
print  '\n' 
print  '呼叫 mod() 函式:'  
print np.mod(a,b)  
print  '\n'  
print  '呼叫 remainder() 函式:'  
print np.remainder(a,b)

輸出如下:

第一個陣列:
[10 20 30]

第二個陣列:
[3 5 7]

呼叫 mod() 函式:                                                     
[1 0 2]

呼叫 remainder() 函式:                                              
[1 0 2]

以下函式用於對含有複數的陣列執行操作。

  • numpy.real() 返回復數型別引數的實部。

  • numpy.imag() 返回復數型別引數的虛部。

  • numpy.conj() 返回通過改變虛部的符號而獲得的共軛複數。

  • numpy.angle() 返回復數引數的角度。 函式的引數是degree。 如果為true,返回的角度以角度制來表示,否則為以弧度制來表示。

import numpy as np 
a = np.array([-5.6j,  0.2j,  11.  ,  1+1j])  
print  '我們的陣列是:'  
print a 
print  '\n'  
print  '呼叫 real() 函式:'  
print np.real(a)  
print  '\n'  
print  '呼叫 imag() 函式:'  
print np.imag(a)  
print  '\n'  
print  '呼叫 conj() 函式:'  
print np.conj(a)  
print  '\n'  
print  '呼叫 angle() 函式:'  
print np.angle(a)  
print  '\n'  
print  '再次呼叫 angle() 函式(以角度制返回):'  
print np.angle(a, deg =  True)

輸出如下:

我們的陣列是:
[ 0.-5.6j 0.+0.2j 11.+0.j 1.+1.j ]

呼叫 real() 函式:
[ 0. 0. 11. 1.]

呼叫 imag() 函式:
[-5.6 0.2 0. 1. ]

呼叫 conj() 函式:
[ 0.+5.6j 0.-0.2j 11.-0.j 1.-1.j ]

呼叫 angle() 函式:
[-1.57079633 1.57079633 0. 0.78539816]

再次呼叫 angle() 函式(以角度制返回):
[-90. 90. 0. 45.]