在scipy Python中使用稀疏矩阵进行计算

时间:2017-05-07 07:22:07

标签: arrays numpy matrix scipy

我正在尝试在Richardson-Lucy反卷积算法中实现停止标准described in this paper。我的测试图像有2.2 Mpx。我需要计算:

estimator = numpy.dot(P_e_ortho, im_deconv.flatten())

其中

im_deconv = [[]] # Image L channel as a 2D array
m = 2.2E6 # im_deconv.size

P_e_ortho = scipy.sparse.identity(m, dtype='int8') - \
            1/m * np.ones((m, m), dtype='int8')

基本上,P_e_ortho在对角线上有1 - 1/m,在其他地方有- 1/m

现在这段代码返回一个内存错误(需要4.8×10 12个单元格)。我怎么能避免在计算中处理整个矩阵呢?

scipy.sparse.identity(m, dtype='int8') * (1 - 1/m)

可以正常设置对角线,但如何更改非对角线元素?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

3.5