• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

numpy中np.nditer、flags=[multi_index] 的用法说明

python 搞代码 4年前 (2022-01-09) 38次浏览 已收录 0个评论
文章目录[隐藏]

在看CS231n的时候,有这么一行代码

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

查了查np.nditer原来是numpy array自带的迭代器。这里简单写个demo解释一下np.nditer的用法。

先构建一个3×4的矩阵

然后输入命令

flags=[‘multi_index’]表示对a进行多重索引,具体解释看下面的代码。

op_flags=[‘readwrite’]表示不仅可以对a进行read(读取),还可以write(写入),即相当于在创建这个迭代器的时候,我们就规定好了有哪些权限。

迭代一下试一试

print it.multi_index表示输出元素的索引,可以看到输出的结果都是index。

it.iternext()表示进入下一次迭代,如果不加这一句的话,输出的结果就一直都是(0, 0)。

补充:it = np.nditer(x, flags=[‘multi_index’], op_flags=[‘readwrite’])

在看cs221n代码的时候碰到一行代码。

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

np.nditer()函数解析

class np.nditer()

参数:

op : ndarray或array_like的序列。迭代的数组。

flags : str的序列,可选。用于控制迭代器行为的标志。

“buffered”可在需要时启用缓冲。

“c_index”导致跟踪C顺序索引。

“f_index”导致跟踪Fortran-order索引。

“multi_index”导致跟踪多个索引或每个迭代维度一个索引元组。

“common_dtype”会将所有操作数转换为公共数据类型,并根据需要进行复制或缓冲。

“copy_if_overlap”使迭代器确定读操作数是否与写操作数重叠,并根据需要进行临时复制以避免重叠。在某些情况下,可能会出现误报(不必要的复制)。

“delay_bufalloc”延迟缓冲区的分配,直到进行reset()调用。允许“allocate”操作数在其值复制到缓冲区之前进行初始化。

“external_loop”导致给定的值是具有多个值的一维数组,而不是零维数组。

当同时使用“buffered”和“external”循环时,“grow-inner”允许值数组大小大于缓冲区大小。

“ranged”允许将迭代器限制为iterindex值的子范围。

“refs_ok”允许迭代引用类型,例如对象数组。

“reduce_ok”允许迭代广播的“readwrite”操作数,也称为缩减操作数。

“zerosize_ok”允许itersize为零。

op_flags : str列表,可选。这是每个操作数的标志列表。至少,必须指定“readonly”,“readwrite”或“writeonly”中的一个。

“readonly”表示只读取操作数。

“readwrite”表示将读取和写入操作数。

“writeonly”表示只会写入操作数。

“no_broadcast”阻止操作数被广播。

“contig”强制操作数数据是连续的。

“aligned”强制操作数数

本文来源gaodai.ma#com搞##代!^码7网

据对齐。

“nbo”强制操作数数据以本机字节顺序排列。

如果需要,“copy”允许临时只读副本。

“updateifcopy”允许在需要时使用临时读写副本。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:numpy中np.nditer、flags=[multi_index] 的用法说明

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址