排序 numpy 内存映射数组时出现内存错误
Memory error when sorting a numpy memmap array
我有一个大小为 12 GB 的 numpy-memmap 矩阵 S
。我正在尝试对每一行进行 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)
有什么可能的解决方案吗?
我正在考虑切片处理它...
提前致谢
最后,我以切片的形式处理内存映射。这是代码。
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
我有一个大小为 12 GB 的 numpy-memmap 矩阵 S
。我正在尝试对每一行进行 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)
有什么可能的解决方案吗? 我正在考虑切片处理它...
提前致谢
最后,我以切片的形式处理内存映射。这是代码。
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