是否有一个 numpy 标志来存储任意信息?
Is there a numpy flag to store arbitrary information?
我需要一种方法来存储一些与 NumPy 数据集(即 ndarray)相关的属性而不改变数据集本身的内容。这当然意味着信息不能存储在 table 本身的单元格中。我试着查看 flags,但显然是 "array flags cannot be set arbitrarily"。为了清楚起见,让我举一个简单的例子。假设数据集以某种方式经过 "pipeline",而它是 "cleaned"。现在我想要一个标志类型的东西来标记这个数据集"cleaned",这样清理操作就不会在那些标记为已清理的数据集上重复,而只会在未标记的数据集上执行。如果不在 table 单元格中写入此信息,我将如何实现这样的目标? (请不要从字面上解释这个例子,它只是一个人为的例子来证明我的观点)
编辑:理想情况下,如果可以在 "significantly" 不影响 ndarray
上的 read/write 时间的情况下完成,那就太好了
您可以将其存储在数据类型中。示例:
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
表示 "void data of zero bytes." 因此 dtype 的额外部分需要没有 space,但有一个可以是任意字符串的名称。你可以有不止一个这样的专栏。
现在你可以这样获取原始数据:
arr['value']
或者:
arr = arr.view(np.recarray) # enable attribute access
arr.value
如果您不熟悉复合数据类型,它们用于 NumPy 调用的 "structured arrays" 或有时 "recarrays."
只检索额外的字符串:
arr.dtype.names[1:]
给你:
('here is a pile of extra data',)
我需要一种方法来存储一些与 NumPy 数据集(即 ndarray)相关的属性而不改变数据集本身的内容。这当然意味着信息不能存储在 table 本身的单元格中。我试着查看 flags,但显然是 "array flags cannot be set arbitrarily"。为了清楚起见,让我举一个简单的例子。假设数据集以某种方式经过 "pipeline",而它是 "cleaned"。现在我想要一个标志类型的东西来标记这个数据集"cleaned",这样清理操作就不会在那些标记为已清理的数据集上重复,而只会在未标记的数据集上执行。如果不在 table 单元格中写入此信息,我将如何实现这样的目标? (请不要从字面上解释这个例子,它只是一个人为的例子来证明我的观点)
编辑:理想情况下,如果可以在 "significantly" 不影响 ndarray
上的 read/write 时间的情况下完成,那就太好了您可以将其存储在数据类型中。示例:
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
表示 "void data of zero bytes." 因此 dtype 的额外部分需要没有 space,但有一个可以是任意字符串的名称。你可以有不止一个这样的专栏。
现在你可以这样获取原始数据:
arr['value']
或者:
arr = arr.view(np.recarray) # enable attribute access
arr.value
如果您不熟悉复合数据类型,它们用于 NumPy 调用的 "structured arrays" 或有时 "recarrays."
只检索额外的字符串:
arr.dtype.names[1:]
给你:
('here is a pile of extra data',)