问题标签 [recarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
94 浏览

python - 更改结构化数组和重新数组的打印方式

Numpy 总结了 large arrays,在交互式会话中工作时很方便。不幸的是,结构化arrays并且recarrays默认情况下没有很好地总结。有没有办法改变这个?

默认情况下,array如果有 1000 个或更少的项目,则会显示完整。当有比这更多的项目时,将array被汇总。这可以用 设置np.set_printoptions(threshold=<number of items to trigger summarization>, edgeitems=<number of items to show in summary>)。这适用于标准数据类型,例如:

结果是

然而,当使用更复杂的数据类型时,总结的帮助就更少了

数组已汇总,但子数据类型未汇总。这成为arrays使用复杂数据类型的大问题。例如array np.zeros(1000, dtype=[('a', float, 3000), ('b', float, 10000)])挂断我的 ipython 实例。

有几种解决方法,而不是np.array直接使用类型,可以继承并编写自定义__repr__. 这适用于大型项目,但不能解决根本问题,也不便于在交互式 python 会话中快速探索数据。我还在我的编辑器中实现了一个自定义过滤器,它会截断很长的控制台输出。这有点小技巧,当我在其他地方启动 python 会话时没有帮助。

是否有我不知道的 numpy 设置,或者可以解决此问题的 python 或 ipython 设置?

0 投票
1 回答
34 浏览

python - How to find the `base` of a record array

How is base determined for record arrays? The docs seem to describe the same behavior as regular arrays, but that's not what it is. Here's a simple array, and a record array created from it.

The base of the record array is correctly set

The base is correctly set for field accesses of the regular array.

However, for the record array I can't determine what the base is. It's not the regular array, the record array, None, or anything else that I've tried.

It behaves as expected for indexing slices

And it definitely still points to the same memory

So, how can the actual base of a record array be found?

0 投票
1 回答
278 浏览

select - FITS_rec 和数据选择:屏蔽而不是“真实”过滤?

可能与Ashley 的帖子重复(但我还不能发表评论;))。

尝试将列添加到我的初始FITS_rec的子选择/样本时,我遇到了同样的问题(基于numpyrecarray);所有行都重新出现(并且似乎没有尊重这个新列的填充......)。Vlas Sokolov 提出的“ hdu_sliced._get_raw_data() ”是一个对我来说效果很好的解决方案,但我想知道:

1) Iguananaut 建议的“更好的方法”是什么?我当然需要有人帮我搜索一下;新手我感觉卡住了:$(需要留在FITS_rec中)。

2)这是预期的行为吗?意思是,我们真的想在一个“掩码数组”上工作,它会是我们原始数组的副本吗?最让我担心的是新计算列中值的“崩溃”。见下文:

FITS_rec([('NGC1001', 11.1), ('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag' , '

FITS_rec([('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag', '

到目前为止,一切都很好...

FITS_rec([('NGC1001', 11.1, 13.30000019), ('NGC1002', 12.3, 16.20000076), ('NGC1003', 15.2, 0.)], dtype=(numpy.record, [('target', 'S20 '), ('V_mag', '

...AND ... NGC1002 和 NGC1003 的新列的值是正确的,但分别在 NGC1001 和 NGC1002 的行中...:|

欢迎任何启蒙:)

0 投票
2 回答
453 浏览

python - numpy:使用不同的列类型快速创建recarray

我正在尝试从一系列具有列名和混合变量类型的numpy数组创建一个recarray。

以下工作但很慢:

我认为应该有一种方法可以使用 np.stack((a,b,c),axis=-1) 来做到这一点,它比 list(zip()) 方法更快。但是,似乎没有一种简单的方法来堆叠保留列类型。该链接似乎确实显示了如何做到这一点,但它非常笨拙,我希望有更好的方法。

谢谢您的帮助!

0 投票
1 回答
325 浏览

numpy - 带有列表的recarray:如何引用列表中的第一个元素

我想将记录数组中几个字段的内容复制到 ndarray 中(均为 float64 类型)。当recarray数据在每个字段中都有一个值时,我知道如何做到这一点:

现在我有一个recarray,每个字段中有一个包含5个浮点数的列表,我只想复制每个列表的第一个元素。当我将上述内容与新的recarray(和列表)一起使用时,出现此错误:

这是完全有道理的(事后看来)。

我想我可以用这个得到每个元素的第一个元素:

我收到此错误:

我有点理解...... numpy 只取第一行(5 个元素)并尝试广播到 92 个元素的列。

所以....现在我想知道如何将每个列表的第一个元素放在 92 个元素列中,挠我的头......提前感谢您的建议。

0 投票
1 回答
714 浏览

python - ndarray 比 recarray 访问快吗?

我能够将我的 recarray 数据复制到 ndarray,进行一些计算并返回带有更新值的 ndarray。

然后,我发现了中的append_fields()功能numpy.lib.recfunctions,并认为简单地将 2 个字段附加到我的原始记录数组以保存我的计算值会更聪明。

当我这样做时,我发现操作要慢得多。我不必计时,基于 ndarray 的过程需要几秒钟,而使用 recarray 需要一分钟+,而且我的测试数组很小,<10,000 行。

这是典型的吗?ndarray 访问比 recarray 快得多?我预计由于按字段名称访问会导致性能下降,但不会这么多。

0 投票
1 回答
143 浏览

numpy - 如何遍历重新排列的行?

默认recarray迭代器似乎正在遍历列。是否有与 pandas'es iterrows/itertuples迭代行视图的对应物?

0 投票
1 回答
189 浏览

numpy - 将 NumPy 记录数组中的字符串列转换为大写

我创建了一个 numpy 记录数组(recarray),如下所示:

现在我想更改列r['name'],使值大写。我如何实现这一目标?

0 投票
1 回答
144 浏览

python - 来自字节或字符串的 Numpy 重新数组

我有一个过程,我需要将一个 numpy recarray 转换为字节,然后从字节重建 recarray。

但是,我不确定如何从字节中恢复数组。

有谁知道我该怎么做?

示例代码:

注意:我实际上不需要使用 numpy recarry,只是一些允许我将 pandas 数据帧转换为字节对象并恢复它的结构。

0 投票
0 回答
44 浏览

python - 编辑recarray的特定列

我有一个必须编辑的FITS格式的表格。这是 Python 中的数据示例:

我想编辑每个数组的最后一列,使其与NSPAX. 为了删除最后一列,我尝试了以下代码:

但是运行它时出现此错误:IndexError: only integers, slices (':'), ellipsis ('...'), numpy.newaxis ('None') and integer or boolean arrays are valid indices

有人能帮我吗?另外,一旦我删除了该列,我该如何添加另一列?