我正在尝试在一个相当大的矩阵上运行一些简单的计算;粗略地说,200Kx200K 或实数。我需要获得:
results = np.abs(mtx).sum(dim='rows')
不幸的是,代码甚至在服务器上也会崩溃,分配大量内存。 处理这个问题的有效方法是什么?
我认为
np.abs
返回第二个矩阵,因此它想要获得更多内存并失败。为了解决这个问题,我们需要按行进行迭代。
我希望这会起作用:
matrix_size = 10_000
mtx = np.random.randint(0, 100, size=(matrix_size, matrix_size))
sums = np.zeros(matrix_size)
for i in range(matrix_size):
sums[i] = np.sum(np.abs(mtx[:, i]))
# or mtx[i, :] for .sum(axis=1)
# not sure, please check this index for your case
print(sums)
我也尝试制作两个
for
循环,但速度非常慢。