【发布时间】:2016-01-04 01:14:55
【问题描述】:
我有一个形状为(70000, 80000) 的csr_matrix A 和另一个形状为(1, 80000) 的csr_matrix B。如何有效地将 B 添加到 A 的每一行?一个想法是以某种方式创建一个稀疏矩阵B',它是重复的B 行,但是numpy.repeat 不起作用,并且使用一个矩阵来创建B' 的内存效率非常低。
我还尝试遍历A 的每一行并向其中添加B,但这又是非常低效的。
更新:
我尝试了一些非常简单的方法,这似乎比我上面提到的想法非常有效。这个想法是使用scipy.sparse.vstack:
C = sparse.vstack([B for x in range(A.shape[0])])
A + C
这很适合我的任务!更多实现:我最初尝试了一种迭代方法,我多次调用vstack,这种方法比只调用一次要慢。
【问题讨论】: