python中的list和array的不同之处
生活随笔
收集整理的這篇文章主要介紹了
python中的list和array的不同之处
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?python中的list和array的不同之處
? ? ? ?python中的list是python的內置數據類型,list中的數據類不必相同的,而array的中的類型必須全部相同。在list中的數據類型保存的是數據的存放的地址,簡單的說就是指針,并非數據,這樣保存一個list就太麻煩了,例如list1=[1,2,3,'a']需要4個指針和四個數據,增加了存儲和消耗cpu。
? ? ? numpy中封裝的array有很強大的功能,里面存放的都是相同的數據類型
運行結果:
創建:
array的創建:參數既可以是list,也可以是元組.使用對應的屬性shape直接得到形狀? ?也可以直接改變屬性array的形狀,-1代表的是自己推算。這里并不是T, reshape(())也可以
array([[ 1, 2, 3],[ 4, 4, 5],[100, 100, 100],[100, 100, 100]])
前面在創建數組的時候并沒有使用數據類型,這里我們也可以使用數據類型。默認的是int32.
np.arange(a,b,c)表示產生從a-b不包括b,間隔為c的一個array,數據類型默認是int32。但是linspace(a,b,c)表示的是把a-b平均分成c分,它包括b。
有時候我們需要對于每一個元素的坐標進行賦予不同的數值,可以使用fromfunction函數
array([ 2., 3., 4., 5., 2., 3., 4., 5., 2., 3.]) fromfunction必須支持多維數組,所以他的第二個參數必須是一個tuple,只能是(10,),(10)是錯誤的。
array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9.],[ 2., 4., 6., 8., 10., 12., 14., 16., 18.],[ 3., 6., 9., 12., 15., 18., 21., 24., 27.],[ 4., 8., 12., 16., 20., 24., 28., 32., 36.],[ 5., 10., 15., 20., 25., 30., 35., 40., 45.],[ 6., 12., 18., 24., 30., 36., 42., 48., 54.],[ 7., 14., 21., 28., 35., 42., 49., 56., 63.],[ 8., 16., 24., 32., 40., 48., 56., 64., 72.],[ 9., 18., 27., 36., 45., 54., 63., 72., 81.]]) 雖然說,這里提供了很多的直接產生array的方式,但是大部分情況我們都是會從list進行轉換,因為在實際的處理中,我們需要從txt加載文件,那樣直接讀入的數據顯示存放到list中,需要處理的時候我們轉換到array,因為array的設計更加符合我們的使用,涉及到矩陣的運算在使用mat,那么list主要就是用進行元素的索取。
上面的韓順返回最終的數據就是最初的list數據集,再根據不同的處理需求是轉化到array還是mat。其實array是mat的父類,能用mat的地方,array理論上都能傳入。
元素訪問:
上面是array的一維數組的訪問方式,我們再來看看二維的處理方式
[[4 4 5]] [4 4 5]
[4 4 5] [[4 4 5]]
5 [[ 4 4 5][100 100 100][100 100 100]] 5
可以看出對于有:的表達最終的結果外面還嵌套一層list的[],。訪問的一定要注意,python最bug的就是,語法靈活,不管怎樣寫索引語法都是正確的,但是最終的書結果卻讓你大跌眼鏡。 還有array的索引最終產生的是一個一個原始數據的淺拷貝,還和原來的數據共用一塊兒內存
[array([1, 2, 3]), 0, array([100, 100, 100]), array([100, 100, 100])]
除了這些之外還有自己的更加牛掰的方式(只能用array) 1)使用布爾數組.感覺甚是強大,就不要自己寫什么判斷語句啦,注意這種方式得到結果不和原始數組共享空間。布爾索引僅僅適用于數組array,list沒資格用。布爾索引最終得到下標索引為true的數據。索引只能是布爾數組
[0 1 2 3 4 5 6 7 8 9] [1 2 3 4 5] [1 2 3 4 5]
array和list區別*2
[ 0 2 4 6 8 10 12 14 16 18] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
array的廣播
print np.add(a,b,c)
[[ 0 1 2 3 4][10 11 12 13 14][20 21 22 23 24][30 31 32 33 34][40 41 42 43 44][50 51 52 53 54]]
轉自博客:https://blog.csdn.net/liyaohhh/article/details/51055147#reply
總結
以上是生活随笔為你收集整理的python中的list和array的不同之处的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西电计算机学院毕设答辩,关于2020年(
- 下一篇: 浅谈与时俱进的OS发展史