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