【发布时间】:2021-12-06 20:24:12
【问题描述】:
我有一个形状为(1, 1000) 的numpy 数组V。我还有一个 csr_matrix M,形状为 (100000, 1000)。对于M 中的每一行m,我想计算V 和m 之间的成对最小值,并将所有结果存储在一个新矩阵中,并且我想高效地完成它。最终结果也应该是一个形状为(100000, 1000)的矩阵。
我考虑/尝试过的一些方法:
- 使用 for 循环遍历
M的每一行。这可行,但速度很慢。 - 将
M转换为矩阵:numpy.minimum(V, M.toarray()),这会占用大量内存。 -
numpy.minimum(V, M)不起作用。我收到一条错误消息:Comparing a sparse matrix with a scalar less than zero using >= is inefficient。
在不占用太多内存或时间的情况下,有什么好的和有效的方法来做到这一点?
【问题讨论】:
-
v的某些值是否为负数? -
我第二个@hpaulj 的问题。如果
v中的值是非负数,那么有一些相当有效的方法。 -
不,
V和M中的所有数字都在 0 和 1 之间,包括 0 和 1。 -
这是找到元素最大值的有效解决方案。 stackoverflow.com/a/64920528/4045774
标签: python arrays numpy scipy sparse-matrix