对numpy memmap数组排序时出现内存错误

对numpy memmap数组排序时出现内存错误,numpy,numpy-memmap,memmap,Numpy,Numpy Memmap,Memmap,我有一个大小为12GB的numpy memmap矩阵S。我试着对每一行进行排序。为此,我定义了另一个memmap数组first_k来保存结果。问题是发生了内存错误 代码如下: first_k = np.memmap('first_k', dtype='float32', mode='w+', shape=S.shape) first_k[:] = np.memmap.argsort(S, axis=1) 有什么可能的解决办法吗? 我想把它切成片 提前感谢最后,我将memmap分片处理。这是代码

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

代码如下:

first_k = np.memmap('first_k', dtype='float32', mode='w+', shape=S.shape)
first_k[:] = np.memmap.argsort(S, axis=1)
有什么可能的解决办法吗? 我想把它切成片


提前感谢

最后,我将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

argsort为RAM中的索引分配输出缓冲区。它甚至可能是24GiB,因为可能使用了
有符号长
类型。你的内存用完了