wil*_*ill 4 python numpy scipy
我是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
Run Code Online (Sandbox Code Playgroud)
差不多,我希望在添加转置后所有非零值都等于1,但我得到了花哨的索引错误消息.
或者,如果我可以证明矩阵G是对称的,则不需要添加转置.
任何方法的任何见解都将非常感激.
除了做类似的事情G = G / G,你可以继续操作G.data.
所以,在你的情况下,做任何一个:
G.data = np.ones(G.nnz)
Run Code Online (Sandbox Code Playgroud)
要么
G.data[G.data != 0] = 1
Run Code Online (Sandbox Code Playgroud)
会做你想做的.这更灵活,因为它允许您预先形成其他类型的过滤器(例如G.data[G.data > 0.9] = 1或G.data = np.random.random(G.nnz))
第二个选项仅在值为非零值时将值设置为1.在某些计算过程中,您将得到"密集"的零值(即它们实际上存储为稀疏数组中的值).(您可以将其删除到位G.eliminate_zeros())
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |