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

时间:2017-12-15 10:14:16

标签: python numpy metadata

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

编辑:理想情况下,如果没有"显着"这将是很好的。影响ndarray的读/写时间

1 个答案:

答案 0 :(得分: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又名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',)