3

我有一些 NumPy 数组被腌制并使用bson模块存储在 MongoDB 中。例如,如果x是一个 NumPy 数组,那么我将 MongoDB 记录的一个字段设置为:

bson.binary.Binary(x.dumps())

我的问题是是否可以在x不重新加载整个数组的情况下通过np.loads(). 所以,首先,我怎样才能让 MongoDB 只给我一个二进制数组的块,其次,我怎样才能把那个块变成一个 NumPy 数组。我应该在这里提一下,我还拥有关于数组的所有 NumPy 元数据,例如它的维度和数据类型。

一个具体的例子可能是我有一个数据类型为 (100000,10) 的二维数组,np.float64我只想检索x[50,10].

4

2 回答 2

0

我不能肯定地说,但是检查BSON C++的 api 文档我知道它不是为部分检索而设计的......

如果可以的话,请考虑使用pytables,它专为大数据而设计,并且可以与 numpy 很好地互操作。不过,Mongo 非常适合某些分布式应用程序,而 pytables 则不然。

于 2012-08-31T14:02:01.533 回答
0

如果您将数组直接存储在 MongoDB 内部,您还可以尝试使用$slice运算符来获取数组的连续子集。您可以将二维数组线性化为一维数组,$slice运算符将为您提供矩阵行,但如果您想选择列或通常选择不连续的索引,那么您就不走运了。

上的背景$slice

于 2012-08-31T14:08:51.583 回答