1. 程式人生 > >python中的list和array的不同之處

python中的list和array的不同之處

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]]