Numpy陣列
阿新 • • 發佈:2020-10-11
陣列維度變化
- numpy的基本型別是ndarray,即n維陣列
- 想用ndarray進行矩陣運算,首先要保證運算物件是二維陣列
- 一維陣列並不等價於線性代數中的向量,它永遠是一行,沒有轉置,如果想進行矩陣運算必須先升為二維陣列:
a = a[:,None] # 方法一
a = np.expand_dims(a, axis=1) # 方法二
例如:
In [1]: import numpy as np In [2]: a = np.array([1,2,3]) In [3]: a Out[3]: array([1, 2, 3]) In [4]: a.T Out[4]: array([1, 2, 3]) In [5]: a = a[:,None] In [6]: a Out[6]: array([[1], [2], [3]]) In [7]: a.T Out[7]: array([[1, 2, 3]])
- 二維陣列進行矩陣運算不改變陣列的維數,即使結果是一個向量也是二維陣列
In [8]: a=np.array([[1,2,3]]) In [9]: b=a In [10]: c=np.dot(a, b.T) In [11]: c Out[11]: array([[14]])
- 二維陣列通過索引取出一行/列時會降維
In [14]: a=np.ones((3,3)) In [15]: a Out[15]: array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]]) In [16]: a[1,:] Out[16]: array([1., 1., 1.])
np.mean()
等內建函式運算後會自動降維,否則要手動指定keepdims=True
In [17]: np.mean(a, axis=1)
Out[17]: array([1., 1., 1.])
In [18]: np.mean(a, axis=1, keepdims=True)
Out[18]:
array([[1.],
[1.],
[1.]])
- 所以在對ndarray進行運算之前先進行shape的檢查是個好習慣
常用函式集錦
np.clip()
np.percentile()
np.indice()