赋值后,numpy recarray的花式索引丢失了引用

国丰

我在代码中发现了一种奇怪的情况,该问题显示在下面的代码中

import numpy as np

dt = dict(names = ['n1','n2'], formats = ['a8','int'])
reca = np.recarray((10,), dtype = dt)
reca['n1'] = ['a','b','c','d','e','f','g','e','f','g']
reca['n2'] = range(10)

sreca = reca[::2]
print sreca[0] in reca

sreca[0]['n2'] = 12
print sreca[0] in reca

ireca = reca[[1,3,5,7]]
print ireca[0] in reca

ireca[0]['n2'] = 7
print ireca[0] in reca

输出为:

True
True
True
False

据我了解,除非我直接为其分配新值否则应保留srecaireca的引用reca,但ireca在分配后会丢失其引用。我不知道这是否可以预期。

有人可以建议我如何避免这种情况吗?

顺便说一句,我发现对代码reca['n1'] = ['a']*10进行一些小的更改(例如)会使True本示例中的我全部受益,这的确使我感到困惑。

索洛GP卡斯特罗

在中使用花式索引recarray将把数据复制到新数组中。相反,您可以执行以下操作:

ireca = [reca[i] for i in [1,3,5,7]]

因为仅获取recarray的一项即可保留引用。您可以使用flags参数检查何时创建了新数组

  • print(reca[0].flags) 表演 OWNDATA : False
  • print(reca[[0,1]].flags) 表演 OWNDATA : True

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Numpy 变量赋值是通过引用?

来自分类Dev

花式索引并分配了numpy数组

来自分类Dev

使用 numpy 花式索引分配 arr

来自分类Dev

numpy:花式索引“意外的行为”-花式索引似乎提供的结果是直觉上期望的“转置”

来自分类Dev

来自索引列表和切片的numpy花式索引

来自分类Dev

带有2D数组的Numpy花式索引-说明

来自分类Dev

为什么花式索引与numpy中的切片不同?

来自分类Dev

在Numpy中执行多维索引后,为什么数组会丢失其掩码?

来自分类Dev

在Numpy中执行多维索引后,为什么数组会丢失其掩码?

来自分类Dev

花式索引一个numpy矩阵:每行一个元素

来自分类Dev

修改类名称后,节点引用丢失

来自分类Dev

为什么在赋值后定义 movex 时,python 3.5 会返回 UnboundLocalError:在赋值之前引用了局部变量“movex”

来自分类Dev

添加索引执行计划后显示索引丢失

来自分类Dev

为 numpy 矩阵赋值

来自分类Dev

赋值中引用的含义

来自分类Dev

类变量丢失赋值范围

来自分类Dev

内部$ .getJSON完成后,对迭代器的引用将丢失

来自分类Dev

首次运行后对共享文件夹的引用丢失

来自分类Dev

内部$ .getJSON完成后,对迭代器的引用将丢失

来自分类Dev

Swift递增后如何赋值?

来自分类Dev

运算符 [] 后的赋值

来自分类Dev

需要大量的花式索引建议

来自分类Dev

花式索引中的多重条件

来自分类Dev

大熊猫的花式索引

来自分类Dev

花式索引到矩阵运算

来自分类Dev

张量流中的花式索引

来自分类Dev

UnboundStackError,在赋值前被引用?Python

来自分类Dev

python如何在赋值运算符后赋值

来自分类Dev

删除行后表中的移位索引引用

Related 相关文章

热门标签

归档