關於numpy 陣列的知識總結
阿新 • • 發佈:2018-11-13
一、簡單一維陣列的建立
arr1 = np.arange(10) #建立內容為0—9的一維陣列 [0,1,2,3,4,5,6,7,8,9]
arr1.shape : (10,)
這裡說明了一個問題,(10,)指的是一維陣列的長度,沒有行和列的概念。
對比可知(1,10)指的是一個特殊的二維陣列,也即一個行向量,如下:
[[0,1,2,3,4,5,6,7,8,9]]
二、建立二維陣列
1、arange+reshape
arr2 = np.arange(0,30,2).reshape(3,5)
2、linspace + resize
arr3 = np.linspace(0,4,9)
arr3.resize(3,3)
這裡可以看出reshape 和resize 的區別:reshape 有返回值,而resize沒有。
3、矩陣拼接
p = np.ones([2, 3], int)
np.hstack([p, 2*p])#水平拼接
np.vstack([p, 2*p])#豎直拼接
hstack:
[[1 1 1 2 2 2]
[1 1 1 2 2 2]]
vstack:
[[1 1 1]
[1 1 1]
[2 2 2]
[2 2 2]]
三、二維陣列轉換為一維陣列
flatten 和 ravel
a = np.array([[1,2],[3,4]]) b = a.flatten() c = a.ravel()
二者之區別:flatten 返回的是a 陣列的一個拷貝,ravel 返回的是a陣列本身。
>>> x = np.array([[1, 2], [3, 4]]) >>> x.flatten()[1] = 100 >>> x array([[1, 2], [3, 4]]) # flatten:返回的是拷貝 >>> x.ravel()[1] = 100 >>> x array([[ 1, 100], [ 3, 4]])