我有以下形式的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中的非零元素相对应的元素的方法。
我无法理解的部分是由于每个行/列的条目数可能不同。
我发现您可以在python中使用布尔数组索引,因此以下功能可以实现我想要的功能:
for r in range(rows):
A[r,B[r,:]!=0] = np.dot(B[r , B[r,:]!=0], C[: , B[r,:]!=0].T)
看起来有点复杂,但是它为计算提供了正确的元素。唯一的问题是,当B的尺寸大于它的索引大小时,B的大小将引发超出范围的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句