NumPy迭代数组
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迭代数组的更多相关文章
- NumPy 迭代数组
NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用 arange() ...
- Lesson10——NumPy 迭代数组
NumPy 教程目录 NumPy 迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. Exa ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 迭代数组
import numpy as np a = np.arange(6).reshape(2,3) print ('原始数组是:') print (a) print ('\n') print ('迭代输 ...
- 找出numpy array数组的最值及其索引
在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where ...
- python 工具 字符串转numpy浮点数组
不同的数字之间使用 空格“ ”,“$”,"*"等隔开,支持带小数点的字符串NumArray=str2num(LineString,comment='#')将字符串中的所有非Doub ...
- Numpy | 04 数组属性
NumPy 数组的维数称为秩(rank),一维数组的秩为 1,二维数组的秩为 2,以此类推. 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions).比如说,二 ...
- numpy使用数组进行数据处理
numpy使用数组进行数据处理 meshgrid函数 理解: 二维坐标系中,X轴可以取三个值1,2,3, Y轴可以取三个值7,8, 请问可以获得多少个点的坐标? 显而易见是6个: (1,7)(2,7) ...
- python数据分析 Numpy基础 数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- Numpy中数组的乘法
Numpy中数组的乘法 按照两个相乘数组A和B的维度不同,分为以下乘法: 数字与一维/二维数组相乘: 一维数组与一维数组相乘: 二维数组与一维数组相乘: 二维数组与二维数组相乘: numpy有以下乘法 ...
随机推荐
- Keepalived 配置文件
keepalived的配置文件: keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs. 全局定义及 ...
- CDN&对象存储
概念 CDN是什么:名词解释不清,加快静态资源访问的技术 CDN原理:将静态资源缓存到用户所在城市 实现 步骤1:注册七牛云账号 https://portal.qiniu.com/signup?cod ...
- Chrome Vue Devtools插件安装和使用
安装:fq后在chrome应用商店搜索 Vue Devtools并安装,安装成功后浏览器右上角有vue的图标 安装完毕后,打开含有vue框架的网站,这是vue图标会变亮,进入开发者工具,再右侧vue选 ...
- 实践:使用了CompletableFuture之后,程序性能提升了三倍
CompletableFuture 相比于jdk5所提出的future概念,future在执行的时候支持异步处理,但是在回调的过程中依旧是难免会遇到需要等待的情况. 在jdk8里面,出现了Comple ...
- VS2015中使用qt开发客户端,QPluginLoader加载dll为null的解决办法
1,问题重现: 使用vs2015开发一款qt软件,使用了QPluginLoader动态加载插件的方式,调试的时候,发现dll模块没有加载进来,debug发现QPluginLoader的instance ...
- KMP算法Next()函数的一个应用
转载:http://www.cnblogs.com/vongang/archive/2012/05/04/2483419.html 记一个KMP算法的应用,经典的KMP算法详解还是看这里 问题:给一个 ...
- centos配置网络yum源 和本地yum源
一,网络yum源 1.备份 yum文件 cd /etc/ cp -r yum.repos.d yum.repos.d.bak 2.在系统联网的情况下执行下面命令下载 wget -O /etc/yu ...
- workerman离线推送方案
方案一:目前网上比较流行的 方案二:参考腾迅IM
- 在pycharm中如何设置代码对齐竖线
方法:启动pycharm软件,打开一个文件,点 file 菜单,选择 settings,在弹出的setting菜单中依次选择editor-->general-->appearance,然后 ...
- git本地创建多个分支互不干扰
git本地创建多个分支,互不干扰. 情景:在做某个需求a时,先需要修改紧急bug b:发版时发的是远程dev的代码. 方式一(推荐): (1)本地已有分支dev,写了需求a,先commit,即将工 ...