ndarray數組的創建與轉換
-
ndarray數組的創建
-
方法1
x = np.array(list/tuple) x = np.array(list/tuple, dtype=np.float32)
不指定參數dtype時,numpy將根據數據的情況關聯一個dtype類型
從python中的列表元祖創建
a = np.array([1, 2, 3]) print(a)#[1 2 3] # 從元祖類型創建 b = np.array((1, 2, 3)) print(b)#[1 2 3] # 從列表和元祖的混合類型創建 c = np.array([[1, 2], [2, 3, 4], (1, 2, 3)]) print(c)#[list([1, 2]) list([2, 3, 4]) (1, 2, 3)]
-
方法2
使用numpy中函數創建ndarray數組,如:arange, ones, zeros等
-
使用np.arange(n)函數創建,類似ndarray類型,元素從0到n-1
a = np.arange(10) print(a) # [0 1 2 3 4 5 6 7 8 9]
-
使用np.ones(shape)函數:根據shape生成一個元素全爲1的數組,shape是元祖類型
沒有指定dtype,默認爲浮點型# 創建一個2行4列的ndarray a = np.ones((2, 4)) print(a) [[1. 1. 1. 1.] [1. 1. 1. 1.]] # 創建一個多維數組,可以理解爲2個3行4列的數組 a = np.ones((2, 3, 4), dtype=np.int64) print(a) [[[1 1 1 1] [1 1 1 1] [1 1 1 1]]
-
使用np.zeros(shape)函數:根據shape生成一個元素全爲0的數組,shape是元祖類型
沒有指定dtype,默認爲浮點型a = np.zeros((2, 4)) print(a) [[0. 0. 0. 0.] [0. 0. 0. 0.]]
-
使用np.full(shape,val)函數:根據shape生成一個數組,每個元素值均爲val,shape是元祖類型
創建一個3行4列值全爲2的ndarraya = np.full((3, 4), 2) print(a) [[2 2 2 2] [2 2 2 2] [2 2 2 2]]
-
使用np.eye(n)函數:創建一個正方形的n*n單位矩陣,
a = np.eye(4) print(a) [[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]
拓展:
-
np.ones_like(a) :根據數組a的形狀生成一個元素全爲1的數組;
-
np.zeros_like(a) :根據數組a的形狀生成一個元素全爲0的數組;
-
np.full_like(a,val) :根據數組a的形狀生成一個元素全爲val的數組;
-
-
方法3,使用numpy其它的一些方法,例如linspace,concatenate
-
np.linspace() : 根據起止數據等間距地填充數據,形成數組
a = np.linspace(2, 8, 3, dtype=np.int32) print(a) # [2 5 8]
-
合併兩個或多個數組
c = np.concatenate((np.array([1, 2]), np.array([2, 3]))) print(c) # [1 2 2 3]
-
-
-
數組的轉換
-
維度轉換
-
reshape(shape):不改變數組元素,返回一個shape形狀的數組,原數組不變。
a = np.zeros((2, 4)) print(a) """ [[0. 0. 0. 0.] [0. 0. 0. 0.]] """ b = a.reshape((1, 8)) print(b) """ [[0. 0. 0. 0. 0. 0. 0. 0.]] """ # shape是變的,size是不變的,也就是2×4 = 1*8,否則報錯
-
resize(shape):不改變數組元素,不返回一個shape形狀的數組,而且原數組元素改變。
a = np.full((2,3),5) print(a) """ [[5 5 5] [5 5 5]] """ a.resize((2,8)) print(a) """ [[5 5 5 5 5 5 0 0] [0 0 0 0 0 0 0 0]] """
-
flatten():對數組進行降維,返回摺疊後的一維數組,原數組不變
a=np.eye(4) print(a) print(a.flatten())
-
-
類型轉換
-
元素類型的變換:
a = np.ones((1, 2), dtype=np.int) print(a) # [[1 1]] print(a.astype(np.float)) # [[1. 1.]]
-
數組向列表的轉換:
a = np.full((2, 3), 10) print(a) """ [[10 10 10] [10 10 10]] """ print(a.tolist()) """ [[10, 10, 10], [10, 10, 10]] """
-
-