【Pythonメモ】enumerate OrderDicts nditer

enumerate

リストをインデックス化することができます。

>> list=["a","b","c","d","e"]
>>> for index,val in enumerate(list):
        print(index,val)

(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')

OrderDicts

ディクショナリとほぼ同じだが、順序が保存出来る。

>>> tests = OrderedDict()
>>> tests['test1'] = '1'
>>> tests['test2'] = '2'
>>> tests['test3'] = '3'
>>> print tests
OrderedDict([('test1', '1'), ('test2', '2'), ('test3', '3')])

>>> for k, v in fruits.items():
        print(k,v)
 
('test1', '1')
('test2', '1')
('test3', '2')

numpy nditer

nditerを用いると、繰り返し処理が楽なる

例えば、2×3行列なら以下のように×

import numpy as np

np_array = np.random.randn(2,3)

print(np_array)

nditer = np.nditer(np_array, flags=['multi_index'])

while not nditer.finished:
    print(np_array[nditer.multi_index])
    nditer.iternext()
    
[[-1.10258502 -1.390158   -1.3459963 ]
 [ 0.92886904 -0.2251729   0.23059408]]

-1.10258502292
-1.39015799755
-1.3459963044
0.928869035018
-0.225172899317
0.230594077137

pythonのみで同じ処理を書くのは以下の通り

ネストしなくていい分、nditerを使ったほうが楽です。

for  test in np_array:
    for t in test:
        print(t)