写入NumPy memmap仍然加载到RAM内存中

2024-05-13 21:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过IPython笔记本测试NumPy的memmap,代码如下

Ymap = np.memmap('Y.dat', dtype='float32', mode='w+', shape=(5e6, 4e4))

如您所见,Ymap的形状相当大。我试图像稀疏矩阵一样填充Ymap。我不使用scipy.sparse矩阵,因为我最终需要用另一个密集矩阵点乘它,这肯定不适合内存。

总之,我正在执行一系列非常长的索引操作:

Ymap = np.memmap('Y.dat', dtype='float32', mode='w+', shape=(5e6, 4e4))
with open("somefile.txt", 'rb') as somefile:
    for i in xrange(5e6):
        # Read a line
        line = somefile.readline()
        # For each token in the line, lookup its j value
        # Assign the value 1.0 to Ymap[i,j]
        for token in line.split():
            j = some_dictionary[token]
            Ymap[i,j] = 1.0

这些手术很快就把我的公羊吃掉了。我认为mem映射基本上是一个核心外的numpy.ndarray。我错了吗?为什么我的记忆使用率像疯了一样飞涨?


Tags: theintokenformodenpline矩阵