Python 稀疏零矩阵

Python 稀疏零矩阵,python,Python,我有以下代码: M=np.zeros((N,N),dtype=complex) M=sparse.bsr_matrix(M) M[0][0]=complex(1,1) print(M) 我试图创建一个由零组成的NxN稀疏矩阵,然后将数字添加到其中。有人能告诉我为什么它会给我一个错误吗?谢谢 因为表示块稀疏矩阵,所以不能按索引更改其元素。也许你在找类似的东西?有了它,注意它产生的警告,你可以做你想做的事情: In [192]: M = sparse.csr_matrix((N, N), dtyp

我有以下代码:

M=np.zeros((N,N),dtype=complex)
M=sparse.bsr_matrix(M)
M[0][0]=complex(1,1)
print(M)
我试图创建一个由零组成的NxN稀疏矩阵,然后将数字添加到其中。有人能告诉我为什么它会给我一个错误吗?谢谢

因为表示块稀疏矩阵,所以不能按索引更改其元素。也许你在找类似的东西?有了它,注意它产生的警告,你可以做你想做的事情:

In [192]: M = sparse.csr_matrix((N, N), dtype=np.complex)

In [193]: M[0, 0] = np.complex(1, 1)
C:\Users\<user>\AppData\Local\Continuum\Anaconda3\lib\site-packages\scipy\sparse\compressed.py:742: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
  SparseEfficiencyWarning)

In [194]: print(M)
  (0, 0)        (1+1j)
试试这个:

M = np.zeros((N,N),dtype=complex)
M[0][0] = complex(1,1)
M = sparse.bsr_matrix(M)

print(M)

#   (0, 0)  (1+1j)

不能直接设置稀疏矩阵的值,但可以设置numpy数组的值,然后将其转换为稀疏矩阵

请发布错误,更具体一点。我相信稀疏矩阵有一个独特的表示形式,不允许您直接设置值。我不确定,但也许可以尝试设置您想要的值,然后将其转换为稀疏矩阵。@hoffee:大多数值可以增量更改,尽管您可能不想更改;如果必须的话,它是有用的。