1.np.array構造函數
用法:np.array([1,2,3,4,5])
1.1 numpy array 和 python list 有什麼區別?
標準Python的列表(list)中,元素本質是對象。如:L = [1, 2, 3],須要3個指針和三個整數對象,對於數值運算比較浪費內存和CPU。所以,Numpy提供了ndarray(N-dimensional array object)對象:存儲單一數據類型的多維數組。
1.2 如何強制生成一個 float 類型的數組
d = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], dtype=np.float)
1.3 使用astype(int)對上述 array 進行強制類型轉換
d.astype(int)
1.4.dtype 和type 的區別是什麼
type(d) 和 d.dtype 一個返回的是d 的數據類型 nd.array 另外一個返回的是數組中內容的數據類型
2. arange
用法 :np.arange(0,10) // 生成[0,1,2,3,4,5,6,7,8,9] 左開右閉不包括10
2.1.arange 和python 的range 函數的區別是什麼
arange能夠生成浮點類型,而range只能是整數類型
3. reshape
np.arange(1,10).reshape((3,3)) 從(3,4)改成(4,3)並非對數組進行轉置,而只是改變每一個軸的大小,數組元素在內存中的位置並無改變
reshape(-1,1) 任一行一列
4. 構造等差數列
np.linspace(1, 10, 10)
#構造等差數列 開始值,結束值,共幾個數字
#包括終止值 [1,2,3,4,5,6,7,8,9,10]
#能夠經過選項配置其不包括終止值
c=np.linspace(1, 10, 10, endpoint=False)
5.構造等比數列
np.logspace(1,4,4,base=2,endpoint=True)
6.隨機數生成
6.1隨機生成(4*4)個0-10的數的二維數組
np.random.randint(a, b, size=(c, d))
6.2.隨機生成 0-1的10個數字
np.random.rand
7.np.array 的數組切片
a.切片規則 [三冒號規則]
[開始:結尾:步長]
b.開始爲-1
a[-1] 取最後一個
a = [0,1,2,3,4,5,6,7]
a[-1] = 7
c.結尾爲-1(開始必須爲大於等於0的數)
a[2:-1] = [2,3,4,5,6]
d.步長爲-1,意味着反轉
a[::-1]=[7,6,5,4,3,2,1]
8.特殊矩陣的生成
np.ones((3,3))、np.zeros((3,3))、np.eye(1,1) 奇怪的是 eye 爲啥不接收元祖做爲參數呢?暈 eye 也沒有 寫成eye
還有 a=[1,2,3] np.diag(a) 是生成1,2,3 爲對角線的方陣
9.數組的運算及矩陣的運算
a.數組的相加,至關的隨意,不用同樣的行和列
a = np.array([1,2,3,4,5])
b = a.reshape(-1,1)
a+b 返回的是一個 5*5 的矩陣
b.矩陣的加法必須是行列相同
a = np.matrix(np.array([[1,2,3],[2,1,3]]));
a.T 表示轉置 a.I 表示逆矩陣
c.對應元素相乘用 multiple ,矩陣相乘可直接寫,但行和列要相等
a1=mat([1,1]);
a2=mat([2,2]);
a3=multiply(a1,a2)