我正在通过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
。我错了吗?为什么我的记忆使用率像疯了一样飞涨?
目前没有回答
相关问题 更多 >
编程相关推荐