零的稀疏矩阵

时间:2018-07-13 16:11:18

标签: python

我有以下代码:

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

我正在尝试创建一个零的NxN稀疏矩阵,然后可以将数字加到其中。有人可以告诉我为什么它给我一个错误吗?谢谢!

2 个答案:

答案 0 :(得分:0)

由于bsr_matrix表示块稀疏矩阵,因此无法按索引更改其元素。也许您正在寻找类似csr_matrix的东西?这样,请注意它产生的警告,您可以做您想做的事情:

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)

答案 1 :(得分:0)

尝试一下:

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数组的值,然后将其转换为稀疏矩阵。