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