Numpy 中數組上的算術運算符使用元素級別。最後的結果使用新的一個數組來返回。html
import numpy as np a = np.array( [20,30,40,50] ) b = np.arange(4) b Out[113]: array([0, 1, 2, 3]) c = a -b c Out[114]: array([20, 29, 38, 47]) b ** 2 Out[115]: array([0, 1, 4, 9], dtype=int32) a < 34 Out[116]: array([ True, True, False, False])
須要注意的是,乘法運算符*
的運算在NumPy數組中也是元素級別的(這與許多矩陣語言不一樣)。若是想要執行矩陣乘積,能夠使用dot
函數:python
A = np.array( [[1,1], [0,1]] ) B = np.array( [[2,0], [3,4]] ) A Out[117]: array([[1, 1], [0, 1]]) B Out[118]: array([[2, 0], [3, 4]]) A * B Out[119]: array([[2, 0], [0, 4]]) A.dot(B) Out[120]: array([[5, 4], [3, 4]]) np.dot(A,B) Out[121]: array([[5, 4], [3, 4]])
某些操做(如+=
和*=
)能夠修改現有數組,而不是建立新數組。shell
a = np.ones((2,3), dtype=np.int32) a *= 3 a Out[122]: array([[3, 3, 3], [3, 3, 3]]) b = np.random.random((2,3)) b Out[124]: array([[0.39895014, 0.30638211, 0.9011525 ], [0.6135912 , 0.02488626, 0.67726569]]) a.dtype Out[125]: dtype('int32') b.dtype Out[126]: dtype('float64') b += a b Out[128]: array([[3.39895014, 3.30638211, 3.9011525 ], [3.6135912 , 3.02488626, 3.67726569]]) a += b Traceback (most recent call last): File "D:\pytho3.6\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-129-294cacd62d6f>", line 1, in <module> a += b TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
當使用不一樣類型的數組操做時,結果數組的類型對應於更通常或更精確的數組(稱爲向上轉換的行爲)。數組
因爲定義 a時,數據類型指定爲np.int32,而 a+b 生成的數據類型爲 np.float64,因此自動轉換出錯。dom
np.around 返回四捨五入後的值,可指定精度。函數
around(a, decimals=0, out=None)
decimals 要舍入的小數位數。 默認值爲0。 若是爲負,整數將四捨五入到小數點左側的位置spa
import numpy as np n = np.array([-0.746, 4.6, 9.4, 7.447, 10.455, 11.555]) around1 = np.around(n) print(around1) # [ -1. 5. 9. 7. 10. 12.] around2 = np.around(n, decimals=1) print(around2) # [ -0.7 4.6 9.4 7.4 10.5 11.6] around3 = np.around(n, decimals=-1) print(around3) # [ -0. 0. 10. 10. 10. 10.]
np.floor 返回不大於輸入參數的最大整數。 即對於輸入值 x ,將返回最大的整數 i ,使得 i <= x。 注意在Python中,向下取整老是從 0 舍入。code
import numpy as np n = np.array([-1.7, -2.5, -0.2, 0.6, 1.2, 2.7, 11]) floor = np.floor(n) print(floor) # [ -2. -3. -1. 0. 1. 2. 11.] [-2. -3. -1. 0. 1. 2. 11.]
np.ceil 函數返回輸入值的上限,即對於輸入 x ,返回最小的整數 i ,使得 i> = x。htm
import numpy as np n = np.array([-1.7, -2.5, -0.2, 0.6, 1.2, 2.7, 11]) ceil = np.ceil(n) print(ceil) # [ -1. -2. -0. 1. 2. 3. 11.]
numpy.where(condition[, x, y])
根據 condition 從 x 和 y 中選擇元素,當爲 True 時,選 x,不然選 y。blog
https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
import numpy as np data = np.random.random([2, 3]) print(data) [[0.37618029 0.09114803 0.12294256] [0.59006572 0.18597964 0.46023678]] result = np.where(data > 0.5, data, 0) print(result) [[0. 0. 0. ] [0.59006572 0. 0. ]]