1 回答
TA贡献1801条经验 获得超8个赞
正如 scipy 的文档中所解释的,当 csr_matrix 以这种形式初始化时:
csr_matrix((数据, (row_ind, col_ind)), [shape=(M, N)])
在 scipy.sparse.csr.py 中:
csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
where `data`, `row_ind` and `col_ind` satisfy the
relationship `a[row_ind[k], col_ind[k]] = data[k]`.
当 csr init 时,它会检查 row_ind.max() 和 M 之间的关系。
同样在 scipy.sparse.coo.py 中:
if self.row.max() >= self.shape[0]:
raise ValueError('row index exceeds matrix dimensions')
if self.col.max() >= self.shape[1]:
raise ValueError('column index exceeds matrix dimensions')
if self.row.min() < 0:
raise ValueError('negative row index found')
if self.col.min() < 0:
raise ValueError('negative column index found')
所以 row_ind.max(), col.ind.max() 必须小于 M, N
以上都是因为您想使用 row_ind 和 col.ind 中的数据作为索引来构造稀疏矩阵。
IE:
a = np.random.random((8,2))
row = np.hstack((a[:,0],a[:,1]))
#row[0]=9
col = np.hstack([a[:,1],a[:,0]])
matrix = csr_matrix(([1]*row.shape[0], (row,col)),shape=(a.shape[0],a.shape[0]))
它适用于带有注释的 row[0]=9 。希望能帮助到你。
- 1 回答
- 0 关注
- 1173 浏览
添加回答
举报