numpy.nditer是NumPy的一个迭代器对象,提供能够灵活的访问一个或者多个属猪元素的方式。

# 迭代
z=np.arange(6).reshape(3,2)
for x in np.nditer(z):
print(x,end=',')
运行结果:
0, 1, 2, 3, 4, 5,

以上利用nditer函数实现了一个迭代的过程。

下面来比较下z 、 z.T(转换成矩阵) 、z.T.copy(order='C') (order可以指定行或者列优先) 的迭代效果

# 迭代
z=np.arange(6).reshape(3,2)
for x in np.nditer(z):
print(x,end=',')
print('\n')
for x in np.nditer(z,order='C'):
print(x,end=',')
print('\n')
for x in np.nditer(z.T,order='C'):
print(x,end=',')
print('\n')
for x in np.nditer(z.T.copy(order='F')):
print(x,end=',')
print('\n')
for x in np.nditer(z.T.copy(order='C')):
print(x,end=',')

运行结果:

0,1,2,3,4,5,

0,1,2,3,4,5,

0,2,4,1,3,5,

0,1,2,3,4,5,

0,2,4,1,3,5,
Process finished with exit code 0

nditer 对象有另一个可选参数 op_flags。 默认情况下,nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定 read-write 或者 write-only 的模式。如设置x:     for x in np.nditer(a, op_flags=['readwrite']):

nditer类的构造器拥有flags参数,它可以接受下列值:

c_index :跟踪C的顺序索引

f_index 跟踪Fortran的顺序索引

multi-index :每次迭代可以跟踪一种索类型

external_loop: 给出的值是具有多个值的一维数组,而不是零数组。

# 改变迭代的值
az = np.arange(0,72,6)
az = az.reshape(3,4)
print (az)
for x in np.nditer(az,flags=['external_loop'],order='F'):
print(x,end=',')

以上是flags=external_loop的运用,对比结果如下:

[[ 0  6 12 18]
[24 30 36 42]
[48 54 60 66]]
[ 0 24 48],[ 6 30 54],[12 36 60],[18 42 66],
Process finished with exit code 0

广播迭代

如果两个数组是可广播的,nditer 组合对象能够同时迭代它们。 假设数组 a 的维度为 3X4,数组 b 的维度为 1X4 ,则使用以下迭代器(数组 b 被广播到 a 的大小)。

# 广播迭代
a = np.arange(0,60,5)
a = a.reshape(3,4)
b = np.array([1, 2, 3, 4])
for x,y in np.nditer([a,b]):
print ('%d 扩展 %d' % (x,y), end=", " )

运行结果:

0 扩展 1, 5 扩展 2, 10 扩展 3, 15 扩展 4, 20 扩展 1, 25 扩展 2, 30 扩展 3, 35 扩展 4, 40 扩展 1, 45 扩展 2, 50 扩展 3, 55 扩展 4,
Process finished with exit code 0

NumPy迭代数组的更多相关文章

  1. NumPy 迭代数组

    NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用 arange() ...

  2. Lesson10——NumPy 迭代数组

    NumPy 教程目录 NumPy 迭代数组 NumPy 迭代器对象  numpy.nditer  提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. Exa ...

  3. 吴裕雄--天生自然Numpy库学习笔记:NumPy 迭代数组

    import numpy as np a = np.arange(6).reshape(2,3) print ('原始数组是:') print (a) print ('\n') print ('迭代输 ...

  4. 找出numpy array数组的最值及其索引

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where ...

  5. python 工具 字符串转numpy浮点数组

    不同的数字之间使用 空格“ ”,“$”,"*"等隔开,支持带小数点的字符串NumArray=str2num(LineString,comment='#')将字符串中的所有非Doub ...

  6. Numpy | 04 数组属性

    NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推. 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions).比如说,二 ...

  7. numpy使用数组进行数据处理

    numpy使用数组进行数据处理 meshgrid函数 理解: 二维坐标系中,X轴可以取三个值1,2,3, Y轴可以取三个值7,8, 请问可以获得多少个点的坐标? 显而易见是6个: (1,7)(2,7) ...

  8. python数据分析 Numpy基础 数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

  9. Numpy中数组的乘法

    Numpy中数组的乘法 按照两个相乘数组A和B的维度不同,分为以下乘法: 数字与一维/二维数组相乘: 一维数组与一维数组相乘: 二维数组与一维数组相乘: 二维数组与二维数组相乘: numpy有以下乘法 ...

随机推荐

  1. Keepalived 配置文件

    keepalived的配置文件: keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs.              全局定义及 ...

  2. CDN&对象存储

    概念 CDN是什么:名词解释不清,加快静态资源访问的技术 CDN原理:将静态资源缓存到用户所在城市 实现 步骤1:注册七牛云账号 https://portal.qiniu.com/signup?cod ...

  3. Chrome Vue Devtools插件安装和使用

    安装:fq后在chrome应用商店搜索 Vue Devtools并安装,安装成功后浏览器右上角有vue的图标 安装完毕后,打开含有vue框架的网站,这是vue图标会变亮,进入开发者工具,再右侧vue选 ...

  4. 实践:使用了CompletableFuture之后,程序性能提升了三倍

    CompletableFuture 相比于jdk5所提出的future概念,future在执行的时候支持异步处理,但是在回调的过程中依旧是难免会遇到需要等待的情况. 在jdk8里面,出现了Comple ...

  5. VS2015中使用qt开发客户端,QPluginLoader加载dll为null的解决办法

    1,问题重现: 使用vs2015开发一款qt软件,使用了QPluginLoader动态加载插件的方式,调试的时候,发现dll模块没有加载进来,debug发现QPluginLoader的instance ...

  6. KMP算法Next()函数的一个应用

    转载:http://www.cnblogs.com/vongang/archive/2012/05/04/2483419.html 记一个KMP算法的应用,经典的KMP算法详解还是看这里 问题:给一个 ...

  7. centos配置网络yum源 和本地yum源

    一,网络yum源 1.备份 yum文件 cd /etc/ cp -r  yum.repos.d  yum.repos.d.bak 2.在系统联网的情况下执行下面命令下载 wget -O /etc/yu ...

  8. workerman离线推送方案

    方案一:目前网上比较流行的 方案二:参考腾迅IM

  9. 在pycharm中如何设置代码对齐竖线

    方法:启动pycharm软件,打开一个文件,点 file 菜单,选择 settings,在弹出的setting菜单中依次选择editor-->general-->appearance,然后 ...

  10. git本地创建多个分支互不干扰

    git本地创建多个分支,互不干扰. 情景:在做某个需求a时,先需要修改紧急bug b:发版时发的是远程dev的代码.   方式一(推荐): (1)本地已有分支dev,写了需求a,先commit,即将工 ...