8-Python-NumPy数组迭代
2020-10-19 本文已影响0人
千千罐
1、 提供了一种灵活遍历一个或者多个数组元素的方式
示例:
import numpy as np
a = np.arange(6).reshape(2,3)
print ('原始数组是:')
print (a)
print('\n')
print ('迭代输出元素:')
for x in np.nditer(a):
print (x, end=", " )
print ('\n')
运行结果:
原始数组是:
[[0 1 2]
[3 4 5]]
迭代输出元素:
0, 1, 2, 3, 4, 5,
控制遍历顺序
- for x in np.nditer(a, order='F'):Fortran order,列序优先
- for x in np.nditer(a.T, order='C'):C order,行序优先
如果两个数组是可广播的,nditer 组合对象能够同时迭代它们。 假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。
关于可广播数组,可参阅 https://www.runoob.com/numpy/numpy-broadcast.html
import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
print ('第一个数组为:')
print (a)
print ('\n')
print ('第二个数组为:')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n')
print ('修改后的数组为:')
for x,y in np.nditer([a,b]):
print ("%d:%d" % (x,y), end=", " )
运行结果:
第一个数组为:
[[ 0 5 10 15]
[20 25 30 35]
[40 45 50 55]]
第二个数组为:
[1 2 3 4]
修改后的数组为:
0:1, 5:2, 10:3, 15:4, 20:1, 25:2, 30:3, 35:4, 40:1, 45:2, 50:3, 55:4,
2、 也是数组循环迭代函数
示例:
import numpy as np
a = np.arange(4).reshape(2,2)
print ('原始数组:')
print(a)
#for row in a:
# print (row)
#对数组中每个元素都进行处理,可以使用flat属性,该属性是一个数组元素迭代器:
print ('循环遍历结果:')
for element in a.flat:
print (element)
运行结果:
原始数组:
[[0 1]
[2 3]]
循环遍历结果:
0
1
2
3