我有一个 scipy 稀疏矩阵,我想用一个替换值:
from scipy import sparse
import numpy as np
data = np.array([[1, 2, 3, 0, 5], [6, 0, 0, 9, 10], [0, 0, 0, 0, 15]])
print sparse.coo_matrix(data)
我看到 numpy 有一个 ones_like() 函数,但这并没有解决我的问题。
输出应该是这样的:
(0, 0) 1
(0, 1) 1
(0, 2) 1
(0, 4) 1
(1, 0) 1
(1, 3) 1
(1, 4) 1
(2, 4) 1
最佳答案
最简单的方法是直接操作稀疏矩阵表示。这样做的方式将取决于您选择的代表;对于 COO 格式,它是
data.data[:] = 1
请注意,COO 格式有一个奇怪的功能,它允许重复条目。如果 COO 矩阵在 (1, 1)
位置有两个条目,上面的代码会将这两个条目都设置为 1
,从而产生单个条目 2
如果将矩阵转换为另一种格式。如果您想要单个条目 1
,您可以先规范化重复项
data.sum_duplicates()
data.data[:] = 1
关于python-2.7 - 用 1 填充 Scipy 稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975324/