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