如何優(yōu)雅的遍歷一個數(shù)組,,使用嵌套for循環(huán)嗎,?當(dāng)我們想要遍歷一個多維數(shù)組的時候,如果通過不停的使用循環(huán)去遍歷,,這會讓我們的代碼可讀性與性能都變得很差,,numpy提供了一個函數(shù)nditer,以幫助我們遍歷數(shù)組。nditer的入?yún)⑹且粋€數(shù)組,,返回值是一個可迭代對象,。nditer 默認會優(yōu)先遍歷行序,通過order參數(shù)可以使其優(yōu)先遍歷列序,。 numpy.nditer
import numpy as nparray_2d = np.arange(0, 10).reshape(2, 5)print(array_2d)# 優(yōu)先行序遍歷for element in np.nditer(array_2d): print(element)# 優(yōu)先列序遍歷for element in np.nditer(array_2d, order='F'): print(element)# 返回1維數(shù)組for element in np.nditer(array_2d, flags=['external_loop'],order='F'): print(element) 改變數(shù)組形狀在實際問題的處理之中,,我們經(jīng)常需要改變數(shù)組的形狀,以轉(zhuǎn)換為更為適合處理的數(shù)據(jù)結(jié)構(gòu),。reshape用于在不改變數(shù)組數(shù)據(jù)的條件下,,修改數(shù)組的形狀,我們在快速創(chuàng)建矩陣的適合已經(jīng)多次使用過該函數(shù),。下面再來簡單回顧一下,。 reshape
ndarray.T,該方法會將數(shù)組進行行列轉(zhuǎn)換 import numpy as nparray_2d = np.arange(0,10).reshape(2,5)print(array_2d)print(array_2d.T) 數(shù)組切割 數(shù)據(jù)切割,,顧名思義是將數(shù)組切割為多個數(shù)組,。關(guān)于數(shù)組切割,numpy提供了一個強大的函數(shù)split,,split可以指定按照橫向或則豎向切割數(shù)組,。
import numpy as np# 按行切割array_2d = np.arange(0,10).reshape(2,5)print(array_2d)print(np.split(array_2d,2))# 按列切割array_2d = np.arange(0,12).reshape(2,6)print(array_2d)print(np.split(array_2d,3,axis=1)) 向數(shù)組中添加元素 numpy提供了兩個向數(shù)組中添加元素的方法,,分別時append方法和insert方法,。append方法會將元素添加至原數(shù)組末尾,insert方法會將元素插入到指定索引位置,。下面分別來練習(xí)一下兩種方法的使用,。 append
import numpy as nparray_2d = np.arange(0,10).reshape(2,5)print(array_2d)#向數(shù)組中插入元素new_array_1d = np.append(array_2d,[1,2,3])print(new_array_1d)#按行序向數(shù)組中插入元素# 注意:當(dāng)指定行列時,,輸入數(shù)組的維度必須與原數(shù)組相同new_array_2d = np.append(array_2d,[[10,11,12,13,14]],axis=0)print(new_array_2d)#按列序向數(shù)組中插入元素np.append(array_2d,[[5],[10]],axis=1)print(array_2d) insert
import numpy as nparray_2d = np.arange(0,10).reshape(2,5)print(array_2d)# 向指定位置插入元素new_array_1d = np.insert(array_2d,obj=5,values=[100,101])print(new_array_1d)# 向指定位置按行序插入元素new_array_2d = np.insert(array_2d,obj=1,values=[10,11,12,13,14],axis=0)print(new_array_2d)# 向指定位置按列序插入元素new_array_2d = np.insert(array_2d,obj=1,values=[5,10],axis=1)print(new_array_2d) 刪除數(shù)組中的元素 怎么樣,,通過numpy我們可以很方便的操作復(fù)雜的數(shù)組,下面來看一下本節(jié)最后一個內(nèi)容,,數(shù)組中元素的刪除delete,,delete與insert,append一樣它們不會改變元素組,,而是會返回一個新數(shù)組,,下面來練習(xí)一下delete的使用。 delete
import numpy as nparray_2d = np.arange(0,10).reshape(2,5)print(array_2d)# 將數(shù)組展開為一維數(shù)組后刪除指定索引位置元素,,并返回一維數(shù)組new_array_1d = np.delete(array_2d,3)print(new_array_1d)# 刪除指定行序位置的元素new_array_2d = np.delete(array_2d,0,axis=0)print(new_array_2d)# 刪除指定列序位置的元素new_array_2d = np.delete(array_2d,1,axis=1)print(new_array_2d) 關(guān)于numpy的基礎(chǔ)即將結(jié)束,,下一章將會講解numpy的統(tǒng)計,、排序與篩選,在這之后便會進入下一張pandas基礎(chǔ)的講解,。 轉(zhuǎn)載請注明出處 |
|