是否存在存储任意信息的numpy标志?

问题描述 投票:0回答:1

我需要一种方法来存储与NumPy数据集(即ndarray)相关的一些属性,而不改变数据集本身的内容。这当然意味着信息不能存储在表本身的单元格中。我试着看flags,但显然“数组标志不能任意设置”。为了清楚说明,让我举一个简单的例子。假设数据集通过“管道”,以某种方式“清理”。现在我想要一个标记类型的东西来标记这个数据集“已清理”,这样就可以在标记为已清理的数据集上重复清理操作,并且只对未标记的数据执行清理操作。如果不在表格单元格中写入此信息,我将如何实现这样的目标? (请不要从字面上解释这个例子,它只是一个人为的例子来证明我的观点)

编辑:理想情况下,如果可以在没有“显着”影响ndarray的读/写时间的情况下完成它将会很棒

python numpy metadata
1个回答
3
投票

你可以把它存放在dtype中。例:

arr = np.arange(6).reshape(3,2)
arr.dtype = [('value', int), ('here is a pile of extra data', 'V0')]

我们所做的是将dtype从int更改为[int, 'V'],其中V aka V0的意思是“零字节的无效数据”。因此dtype的额外部分不占用空间,但具有可以是任意字符串的名称。你可以拥有多个这样的专栏。

现在你可以得到这样的原始数据:

arr['value']

要么:

arr = arr.view(np.recarray) # enable attribute access
arr.value

如果你不熟悉复合dtypes,它们会用在NumPy所谓的“结构化数组”中,或者有时候会用“重组”。

要检索额外的字符串:

arr.dtype.names[1:]

给你:

('here is a pile of extra data',)
© www.soinside.com 2019 - 2024. All rights reserved.