0

我有一个S大小为 12 GB 的 numpy-memmap 矩阵。我正在尝试对每一行进行 argsort 。为此,我定义了另一个 memmap 数组first_k来保存结果。问题是发生内存错误。

这是代码:

first_k = np.memmap('first_k', dtype='float32', mode='w+', shape=S.shape)
first_k[:] = np.memmap.argsort(S, axis=1)

任何可能的解决方案?我正在考虑分片处理它......

提前致谢

4

1 回答 1

0

最后,我以切片的形式处理 memmap。这是代码。

N = S.shape[0]
first_k = np.memmap('first_k', dtype='float32', mode='w+', shape=(N, N))        
del first_k

step = 1000
for row in np.arange(0, N, step):
    size = min(step, N-row)
    first_k = np.memmap('first_k',
                        dtype='float32',
                        mode='r+',
                        shape=(size, N),
                        offset=4*N*row)

    first_k[:] = np.memmap.argsort(S[row:row+size], axis=1)
    del first_k
于 2019-11-21T08:34:51.473 回答