python中的list和array的不同之處
阿新 • • 發佈:2019-02-14
python中的list是python的內建資料型別,list中的資料類不必相同的,而array的中的型別必須全部相同。
在list中的資料型別儲存的是資料的存放的地址,簡單的說就是指標,並非資料,這樣儲存一個list就太麻煩了
例如list1=[1,2,3,'a']需要4個指標和四個資料,增加了儲存和消耗cpu。
1、numpy中封裝的array有很強大的功能,裡面存放的都是相同的資料型別
list1=[1,2,3,'a'] print list1 a=np.array([1,2,3,4,5]) b=np.array([[1,2,3],[4,5,6]]) c=list(a) # array到list的轉換 print a,np.shape(a) print b,np.shape(b) print c,np.shape(c)
執行結果:
[1, 2, 3, 'a'] # 元素資料型別不同,並且用逗號隔開
[1 2 3 4 5] (5L,) # 一維陣列,型別用tuple表示
[[1 2 3]
[4 5 6]] (2L, 3L)
[1, 2, 3, 4, 5] (5L,)
注意:
如果a是array,結果是:[1 2 3 4 5]
如果a是list,結果是:[1, 2, 3, 4, 5]
2、array的建立:引數既可以是list,也可以是元組.使用對應的屬性shape直接得到形狀a=np.array((1,2,3,4,5))# 引數是元組 b=np.array([6,7,8,9,0])# 引數是list c=np.array([[1,2,3],[4,5,6]])# 引數二維陣列 print a print b print c print c.shape
結果:
[1 2 3 4 5]
[6 7 8 9 0]
[[1 2 3]
[4 5 6]]
(2L, 3L)
3、也可以直接改變屬性array的形狀,-1代表的是自己推算。這裡並不是T, reshape(())也可以
1)
c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print c.shape # (3L, 4L)
c.shape=2,-1
print c.shape
c.shape=4,-1
print c.shape
結果:
(3L, 4L)
(2L, 6L)
(4L, 3L)
2)
c1 = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]]) d=c1.reshape((4,-1))#d 已變成4 行3 列 d[1:2]=66 #把第1行所有元素變為66 print d d[1:3]=66 #把第1,2 兩行所有元素變為66 print d
結果:
[[ 1 2 3]
[66 66 66]
[ 6 7 7]
[ 8 9 10]]
[[ 1 2 3]
[66 66 66]
[66 66 66]
[ 8 9 10]]
X1=np.array([[1,2],[3,5],[1,9],[3,4],[1,8],[3,14],[1,10],[31,4]])
nn = np.array([2,3,5,7])
print X1[nn] #顯示第2,3,5,7 行的內容
結果:
[[ 1 9]
[ 3 4]
[ 3 14]
[31 4]]