08.Numpy数组迭代
生活随笔
收集整理的這篇文章主要介紹了
08.Numpy数组迭代
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般迭代
NumPy包包含一個迭代器對象numpy.nditer。 它是一個有效的多維迭代器對象,可以用于在數組上進行迭代。 數組的每個元素可使用 Python的標準Iterator接口來訪問。
使用arange()函數創建一個 3X4 數組,并使用nditer對它進行迭代。
示例 1
>>> a = np.arange(0, 60, 5) >>> a.shape = 3, 4 array([[ 0, 5, 10, 15],[20, 25, 30, 35],[40, 45, 50, 55]]) >>> for x in np.nditer(a): ... print(x) ... ... 0 5 10 15 20 25 30 35 40 45 50 55 >>>示例 2
迭代的順序匹配數組的內容布局,而不考慮特定的排序。 這可以通過迭代上述數組的轉置來看到。
>>> import numpy as np >>> a = np.arange(0, 60, 5) >>> a.shape = 3, 4 >>> a array([[ 0, 5, 10, 15],[20, 25, 30, 35],[40, 45, 50, 55]]) >>> b = a.T >>> b array([[ 0, 20, 40],[ 5, 25, 45],[10, 30, 50],[15, 35, 55]]) >>> for x in np.nditer(b): ... print(x) ... ... 0 5 10 15 20 25 30 35 40 45 50 55迭代順序
如果相同元素使用F風格順序存儲,則迭代器選擇以更有效的方式對數組進行迭代。
示例 1
>>> c = b.copy(order='F') >>> for x in np.nditer(c): ... print(x) ... ... 0 5 10 15 20 25 30 35 40 45 50 55 >>>示例 2
可以通過顯式提醒,來強制nditer對象使用某種順序:
>>> for x in np.nditer(a, order='C'): ... print(x) ... ... 0 5 10 15 20 25 30 35 40 45 50 55 >>> for x in np.nditer(a, order='F'): ... print(x) ... ... 0 20 40 5 25 45 10 30 50 15 35 55 >>>修改數組的值
nditer對象有另一個可選參數op_flags。 其默認值為只讀,但可以設置為讀寫或只寫模式。 這將允許使用此迭代器修改數組元素。
示例
>>> for x in np.nditer(a, op_flags=['readwrite']): ... x[...]=2*x ... ... >>> a array([[ 0, 10, 20, 30],[ 40, 50, 60, 70],[ 80, 90, 100, 110]]) >>>外部循環
nditer類的構造器擁有flags參數,它可以接受下列值:
| 1. | c_index 可以跟蹤C順序的索引 |
| 2. | f_index 可以跟蹤Fortran順序的索引 |
| 3. | multi-index 每次迭代可以跟蹤一種索引類型 |
| 4. | external_loop 給出的值是具有多個值的一維數組,而不是零維數組 |
示例
在下面的示例中,迭代器遍歷對應于每列的一維數組。
>>> for x in np.nditer(a, flags=['external_loop'], order='F'): ... print(x) ... ... [ 0 40 80] [10 50 90] [ 20 60 100] [ 30 70 110]廣播迭代
如果兩個數組是可廣播的,nditer組合對象能夠同時迭代它們。 假設數組a具有維度 3X4,并且存在維度為 1X4 的另一個數組b,則使用以下類型的迭代器(數組b被廣播到a的大小)。
示例
>>> a = np.arange(0, 60, 5) >>> a.shape = 3, 4 >>> b = np.arange(1, 5) >>> a array([[ 0, 5, 10, 15],[20, 25, 30, 35],[40, 45, 50, 55]]) >>> b array([1, 2, 3, 4]) >>> for x,y in np.nditer([a, b]): ... print(x, ':', y) ... ... 0 : 1 5 : 2 10 : 3 15 : 4 20 : 1 25 : 2 30 : 3 35 : 4 40 : 1 45 : 2 50 : 3 55 : 4轉載于:https://www.cnblogs.com/oneTOinf/p/10504185.html
總結
以上是生活随笔為你收集整理的08.Numpy数组迭代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 饥荒指令代码大全一览
- 下一篇: 微星z370安装linux系统,微星z3