一起學(xué)習(xí),一起成長!
Numpy數(shù)組的索引是一個內(nèi)容豐富的主題,因為選取數(shù)據(jù)子集或單個元素的方式有很多。
- 一維數(shù)組
In[13]:arr=np.arange(10)
In[14]:arr
Out[14]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In[15]:arr[5]
Out[15]: 5
In[16]:arr[5:8]
Out[16]: array([5, 6, 7])
In[17]:arr[5:8]=12
In[18]:arr
Out[18]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
如上所示,當(dāng)你將一個標(biāo)量值賦值給一個切片時(如arr[5:8]=12),該值會自動傳播到整個選取。跟列表最重要的區(qū)別在于,數(shù)組切片是原始數(shù)據(jù)的視圖。這意味著數(shù)據(jù)不會被復(fù)制,視圖上的任何修改都會直接反映到源數(shù)組上:
In[19]:arr_slice=arr[5:8]
In[20]:arr_slice[1]=12345
Out[21]:arr
Out[21]: array([0,1,2,3,4,12, 12345,12, 8,9])
In[22]:arr_slice[:]=64
In[22]:arr
Out[23]: array([ 0,1,2,3,4, 64, 64, 64,8,9])
由于Numpy的設(shè)計目的是處理大數(shù)據(jù),假如Numpy堅持要將數(shù)據(jù)復(fù)制來復(fù)制去的話會產(chǎn)生何等的性能和內(nèi)存問題。
警告:如果你想要得到的是ndarray切片的一份副本而非視圖,就需要顯示地進(jìn)行復(fù)制操作,例如arr[5:8].copy()。
- 高維度數(shù)組
在一個二維數(shù)組中,各索引位置上的元素不再是標(biāo)量而是一維數(shù)組:
In[24]: arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])
In[25]: arr2d[2]
#注意返回的值,是數(shù)組不是具體的標(biāo)量
Out[25]: array([7, 8, 9])
「親,如果筆記對您有幫助,收藏的同時,記得給點個贊、加個關(guān)注哦!感謝!」
「文中代碼均親測過,若有錯誤之處,歡迎批評指正,一起學(xué)習(xí),一起成長!」
利用Python進(jìn)行數(shù)據(jù)分析