在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ NumPy在數(shù)組上的迭代
NumPy位操作
NumPy數(shù)學(xué)算數(shù)函數(shù)
NumPy高級(jí)索引
NumPy環(huán)境安裝配置
NumPy IO文件操作
NumPy字符串函數(shù)
NumPy切片和索引
NumPy統(tǒng)計(jì)函數(shù)
NumPy矩陣庫(kù)
NumPy數(shù)組創(chuàng)建例程
NumPy線性代數(shù)
NumPy Matplotlib庫(kù)
NumPy教程
NumPy排序、搜索和計(jì)數(shù)函數(shù)
NumPy字節(jié)交換
NumPy Ndarray對(duì)象
NumPy數(shù)組操作
NumPy使用 Matplotlib 繪制直方圖
NumPy數(shù)組屬性
NumPy廣播
NumPy來(lái)自現(xiàn)有數(shù)據(jù)的數(shù)組
NumPy副本和視圖
NumPy在數(shù)組上的迭代
NumPy來(lái)自數(shù)值范圍的數(shù)組
NumPy算數(shù)運(yùn)算
NumPy數(shù)據(jù)類型

NumPy在數(shù)組上的迭代

NumPy - 數(shù)組上的迭代

NumPy 包包含一個(gè)迭代器對(duì)象numpy.nditer。 它是一個(gè)有效的多維迭代器對(duì)象,可以用于在數(shù)組上進(jìn)行迭代。 數(shù)組的每個(gè)元素可使用 Python 的標(biāo)準(zhǔn)Iterator接口來(lái)訪問(wèn)。

讓我們使用arange()函數(shù)創(chuàng)建一個(gè) 3X4 數(shù)組,并使用nditer對(duì)它進(jìn)行迭代。

示例 1

import numpy as np
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a print  '\n'  
print  '修改后的數(shù)組是:'  
for x in np.nditer(a):  
    print x,

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

修改后的數(shù)組是:
0 5 10 15 20 25 30 35 40 45 50 55

示例 2

迭代的順序匹配數(shù)組的內(nèi)容布局,而不考慮特定的排序。 這可以通過(guò)迭代上述數(shù)組的轉(zhuǎn)置來(lái)看到。

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a 
print  '\n'  
print  '原始數(shù)組的轉(zhuǎn)置是:' 
b = a.T 
print b 
print  '\n'  
print  '修改后的數(shù)組是:'  
for x in np.nditer(b):  
    print x,

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

原始數(shù)組的轉(zhuǎn)置是:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]

修改后的數(shù)組是:
0 5 10 15 20 25 30 35 40 45 50 55

迭代順序

如果相同元素使用 F 風(fēng)格順序存儲(chǔ),則迭代器選擇以更有效的方式對(duì)數(shù)組進(jìn)行迭代。

示例 1

import numpy as np
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a print  '\n'  
print  '原始數(shù)組的轉(zhuǎn)置是:' 
b = a.T 
print b 
print  '\n'  
print  '以 C 風(fēng)格順序排序:' 
c = b.copy(order='C')  
print c for x in np.nditer(c):  
    print x,  
print  '\n'  
print  '以 F 風(fēng)格順序排序:' 
c = b.copy(order='F')  
print c 
for x in np.nditer(c):  
    print x,

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

原始數(shù)組的轉(zhuǎn)置是:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]

以 C 風(fēng)格順序排序:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]
0 20 40 5 25 45 10 30 50 15 35 55

以 F 風(fēng)格順序排序:
[[ 0 20 40]
 [ 5 25 45]
 [10 30 50]
 [15 35 55]]
0 5 10 15 20 25 30 35 40 45 50 55

示例 2

可以通過(guò)顯式提醒,來(lái)強(qiáng)制nditer對(duì)象使用某種順序:

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a 
print  '\n'  
print  '以 C 風(fēng)格順序排序:'  
for x in np.nditer(a, order =  'C'):  
    print x,  
print  '\n'  
print  '以 F 風(fēng)格順序排序:'  
for x in np.nditer(a, order =  'F'):  
    print x,

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

以 C 風(fēng)格順序排序:
0 5 10 15 20 25 30 35 40 45 50 55

以 F 風(fēng)格順序排序:
0 20 40 5 25 45 10 30 50 15 35 55

修改數(shù)組的值

nditer對(duì)象有另一個(gè)可選參數(shù)op_flags。 其默認(rèn)值為只讀,但可以設(shè)置為讀寫(xiě)或只寫(xiě)模式。 這將允許使用此迭代器修改數(shù)組元素。

示例

import numpy as np
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a 
print  '\n'  
for x in np.nditer(a, op_flags=['readwrite']): 
    x[...]=2*x 
print  '修改后的數(shù)組是:'  
print a

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

修改后的數(shù)組是:
[[ 0 10 20 30]
 [ 40 50 60 70]
 [ 80 90 100 110]]

外部循環(huán)

nditer類的構(gòu)造器擁有flags參數(shù),它可以接受下列值:

序號(hào) 參數(shù)及描述
1. c_index 可以跟蹤 C 順序的索引
2. f_index 可以跟蹤 Fortran 順序的索引
3. multi-index 每次迭代可以跟蹤一種索引類型
4. external_loop 給出的值是具有多個(gè)值的一維數(shù)組,而不是零維數(shù)組

示例

在下面的示例中,迭代器遍歷對(duì)應(yīng)于每列的一維數(shù)組。

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '原始數(shù)組是:'  
print a 
print  '\n'  
print  '修改后的數(shù)組是:'  
for x in np.nditer(a, flags =  ['external_loop'], order =  'F'):  
    print x,

輸出如下:

原始數(shù)組是:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

修改后的數(shù)組是:
[ 0 20 40] [ 5 25 45] [10 30 50] [15 35 55]

廣播迭代

如果兩個(gè)數(shù)組是可廣播的nditer組合對(duì)象能夠同時(shí)迭代它們。 假設(shè)數(shù)組a具有維度 3X4,并且存在維度為 1X4 的另一個(gè)數(shù)組b,則使用以下類型的迭代器(數(shù)組b被廣播到a的大小)。

示例

import numpy as np 
a = np.arange(0,60,5) 
a = a.reshape(3,4)  
print  '第一個(gè)數(shù)組:'  
print a 
print  '\n'  
print  '第二個(gè)數(shù)組:' 
b = np.array([1,  2,  3,  4], dtype =  int)  
print b 
print  '\n'  
print  '修改后的數(shù)組是:'  
for x,y in np.nditer([a,b]):  
    print  "%d:%d"  %  (x,y),

輸出如下:

第一個(gè)數(shù)組:
[[ 0 5 10 15]
 [20 25 30 35]
 [40 45 50 55]]

第二個(gè)數(shù)組:
[1 2 3 4]

修改后的數(shù)組是:
0:1 5:2 10:3 15:4 20:1 25:2 30:3 35:4 40:1 45:2 50:3 55:4

上一篇:NumPy位操作下一篇:NumPy廣播