美文网首页
8-Python-NumPy数组迭代

8-Python-NumPy数组迭代

作者: 千千罐 | 来源:发表于2020-10-19 09:27 被阅读0次
    1、\color{red}{numpy.nditer(ndarry)} 提供了一种灵活遍历一个或者多个数组元素的方式

    示例:

    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、\color{red}{numpy.ndarray.flat} 也是数组循环迭代函数

    示例:

    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
    

    相关文章

      网友评论

          本文标题:8-Python-NumPy数组迭代

          本文链接:https://www.haomeiwen.com/subject/xdropktx.html