您好,登錄后才能下訂單哦!
這篇文章主要講解了“Numpy元素的遍歷方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Numpy元素的遍歷方法是什么”吧!
迭代器對象 numpy.nditer 提供了一種靈活訪問一個或者多個數組元素的方式。一般情況下的使用方式如下:for x in np.nditer(data_in, order='')
,可以遍歷nparray中的所有數據,舉例如下:
a = np.arange(12).reshape(3,4) for x in np.nditer(a): print(x,end=',') # 0,1,2,3,4,5,6,7,8,9,10,11,
格式:np.nditer(data_in, order='',op_flags =[],flags=[])
參數解釋如下:
參數 | 解釋 |
---|---|
data_in | nparray 類型的數組 |
order | 控制遍歷的順序,可選值為:F 列優先/C 行優先, 默認為C |
op_flags | 控制遍歷出元素的讀寫權限,常用:<br>op_flags=['read-only'] 只讀;<br>op_flags=['readwrite'] 可讀可寫 |
flags | 該參數通常使用flags = ['external_loop'] ,可以將二維數組變化為一維數組輸出,詳細參考下面例子 |
通過參數 order='F'
or order='C'
可以通過改變遍歷的順序;舉例如下:
for x in np.nditer(a, order='F'): # Fortran order,即是列序優先;
for x in np.nditer(a.T, order='C'): # C order,即是行序優先;
for x in np.nditer(a,order='F'): print(x,end=',') # 0,4,8,1,5,9,2,6,10,3,7,11, for x in np.nditer(a,order='C'): print(x,end=',') # 0,1,2,3,4,5,6,7,8,9,10,11,
默認情況下,nditer 對nparray進行遍歷時,遍歷出的元素為只讀對象(read-only),若我們需要修改其中的值,需要設置:op_flags=['readwrite']
a = np.arange(12).reshape(3,4) for x in np.nditer(a,op_flags=['readwrite']): x[...] = 2*x print(a) # [[ 0 2 4 6] # [ 8 10 12 14] # [16 18 20 22]]
嘗試用的參數設置為:flags = ['external_loop']
,其余的設置不常用,就不列舉了;當設置flags = ['external_loop']
后,可以實現對二維數組的行或者列的輸出,在今后的寫代碼過程中,給大家帶來便利;舉例如下:
參數 | 解釋 |
---|---|
c_index | 可以跟蹤 C 順序的索引, 用來返回索引值 |
f_index | 可以跟蹤 Fortran 順序的索引,用來返回索引值 |
external_loop | 給出的值是具有多個值的一維數組,而不是零維數組 |
舉例:
# 返回索引值舉例 a = np.arange(12).reshape(3,4) for x in np.nditer(a,flags=['f_index'],order='F'): print(x,end=',') # 0,4,8,1,5,9,2,6,10,3,7,11, for x in np.nditer(a,flags=['f_index'],order='C'): print(x,end=',') # 0,1,2,3,4,5,6,7,8,9,10,11, # 返回列方向的多個一維數組 a = np.arange(12).reshape(3,4) for x in np.nditer(a,flags=['external_loop'],order='F'): print(x) # [0 4 8] # [1 5 9] # [ 2 6 10] # [ 3 7 11]
當數組Shape相同時,可以直接使用np.nditer(), 舉例如下:
a = np.arange(12).reshape(3,4) b = np.ones(12).reshape(3,4) for i,j in np.nditer([a,b]): print(i,"-->",int(j)) # 輸出如下: # 0 --> 1 # 1 --> 1 # 2 --> 1 # 3 --> 1 # 4 --> 1 # 5 --> 1 # 6 --> 1 # 7 --> 1 # 8 --> 1 # 9 --> 1 # 10 --> 1 # 11 --> 1
當數組Shape不同時,需要滿足廣播規則,才可以使用廣播遍歷,廣播規則請參考:請添加鏈接描述 舉例如下:
a = np.arange(12).reshape(3,4) b = np.arange(4) for i,j in np.nditer([a,b]): print(i,"-->",j) # 輸出如下: # 0 --> 0 # 1 --> 1 # 2 --> 2 # 3 --> 3 # 4 --> 0 # 5 --> 1 # 6 --> 2 # 7 --> 3 # 8 --> 0 # 9 --> 1 # 10 --> 2 # 11 --> 3
感謝各位的閱讀,以上就是“Numpy元素的遍歷方法是什么”的內容了,經過本文的學習后,相信大家對Numpy元素的遍歷方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。