我在表格中的python中的稀疏矩阵中有非零元素位置的索引
(array([0, 1, 2], dtype=int32), array([2, 0, 0], dtype=int32), array([2, 1, 3]))
或以矩阵形式
[[0 2]
[1 0]
[2 0]]
我想使用这个(或其他方法,如果有的话)来执行逐行操作,只使用其他矩阵的相应非零元素,如下所示:
for r in range(rows):
A[r,:] = np.dot(B[r,:],C.T)
基本上我需要一种方法来指定行,并且只选择该行中与矩阵B中的非零元素对应的元素 .
我无法理解的部分是由于每行/每列可以有不同数量的条目 .
2 回答
关于第一个元组代表什么,我有点困惑 . 它是稀疏数组的索引和值吗?例如
矩阵乘法是为这样的数组定义的:
我可以用这个数组逐行实现:
为了它的 Value ,
nonzero
返回我在开始时从你的帖子中复制的数组:稀疏矩阵也有一个
nonzero
方法:我觉得自己正在挣扎着试图弄清楚问题和榜样 .
我发现你可以在python中使用布尔数组索引,所以以下是我想要实现的:
看起来有点复杂,但它得到了正确的计算元素 . 唯一的问题是当B的维度大于索引的索引时,它会抛出索引超出范围的错误 .