如何从行向量的迭代器构建 xarray。生成的数组可能比内存大,并且将由 dask 数组支持。行向量还带有唯一标签,这些标签需要成为结果 xarray 的行索引。在文档中,我只看到一个构造函数,它以内存中的 numpy 数组开头。
一个示例用例是将单词嵌入模型存储为 xarray,单词作为行标签。这些模型通常提供一个迭代器,它在词汇表中的所有单词上生成(字符串、向量)对。大多数模型的维度为 100 多个,词汇表中通常有 ~10^6 个单词。我想将向量堆叠成一个矩阵,以便执行线性代数运算,并且还能够通过单词字符串查找行。
我希望能够写出类似的东西:
import numpy as np
import xarray as xr
vectors = (('V'+str(i), np.random.randn(10000)) for i in range(10**9))
xray = xarray_from_iter(vectors)
xray.to_parquet('big_xarray.parquet')
row1234567 = xray['V1234567']
xarray 是否提供类似的东西xarray_from_iter
?如果不是我该怎么写?
xarray_from_iter
应该像这样工作,numpy.fromiter
除了它还应该标记行。它还需要延迟计算直到调用转储,因为整个问题是该数组大于内存。