gpt4 book ai didi

python - 在 SciPy 中,csr_matrices 的奇特索引

转载 作者:太空狗 更新时间:2023-10-30 02:34:42 26 4
gpt4 key购买 nike

我是 Python 的新手,所以如果这是一个初级问题,请提前原谅我,但我四处搜索并没有找到令人满意的答案。

我正在尝试使用 NumPy 和 SciPy 执行以下操作:

I,J = x[:,0], x[:1]               # x is a two column array of (r,c) pairs
V = ones(len(I))
G = sparse.coo_matrix((V,(I,J))) # G's dimensions are 1032570x1032570
G = G + transpose(G)
r,c = G.nonzero()
G[r,c] = 1
...
NotImplementedError: Fancy indexing in assignment not supported for csr matrices

差不多,我希望在添加转置后所有非零值都等于 1,但我收到了花哨的索引错误消息。

或者,如果我可以证明矩阵 G 是对称的,则不需要添加转置。

如能深入了解这两种方法,我们将不胜感激。

最佳答案

除了像G = G/G这样的操作,你还可以对G.data进行操作。

因此,在您的情况下,执行以下任一操作:

G.data  = np.ones(G.nnz)

G.data[G.data != 0] = 1

会做你想做的事。这更灵活,因为它允许您预先形成其他类型的过滤器(例如 G.data[G.data > 0.9] = 1G.data = np.random.random( G.nnz))

第二个选项只会将值设置为 1,如果它们具有非零值。在某些计算过程中,您会得到“密集”的零值(即它们实际上作为值存储在稀疏数组中)。 (您可以使用 G.eliminate_zeros() 就地删除它们)

关于python - 在 SciPy 中,csr_matrices 的奇特索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6782556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com