【问题标题】:add multiple rows/columns in a sparse matrix scipy在稀疏矩阵scipy中添加多行/列
【发布时间】:2014-03-12 23:41:01
【问题描述】:

我有一个 scipy 稀疏矩阵,我需要添加多行(以块为单位),比如 1:30,然后是 45:50,等等。最有效的方法是什么?

【问题讨论】:

  • “添加多行”是指“在这两行之间插入”还是“写入这些行”?
  • 不,我想要一个新向量,它将是多个行向量相加的结果

标签: python numpy matrix scipy


【解决方案1】:

sum 不会做这项工作吗?试试:

a = np.array([[1,1],
              [2,2],
              [3,3]])
>>> a[1:3]
array([[2, 2],
       [3, 3]])

>>> sum(a[1:3])
10

编辑:如果您要“垂直”求和

>>> sum( a, axis=0 )
array([6, 6])

【讨论】:

  • 这是一个稀疏矩阵,因此 numpy.sum(a[1:3]) 会引发 Indexerror。
  • 您使用的是哪种类型的稀疏矩阵?我尝试使用 csr 但没有遇到 indexerror... 虽然必须以 a[0:2].sum(axis=0) 的形式进行
  • 我意识到自从提出这个问题以来软件行为可能已经发生了很大变化,但是对于 python 3.6.7、numpy 1.15.4、scipy 0.19.1,建议的解决方案 np.sum(matrix[firstRow:lastRow]) 工作正常使用 csr 矩阵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2017-01-19
  • 2012-05-15
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多