Python:通过标量乘以稀疏矩阵的列返回越界错误

时间:2016-10-20 10:12:11

标签: python matrix sparse-matrix scalar

给定100x180 U0的{​​{1}}稀疏矩阵1,如下所示:

In[1]: U.todense()
Out[1]:
matrix([[ 1.,  1.,  0., ...,  0.,  0.,  0.],
        [ 1.,  0.,  1., ...,  0.,  0.,  0.],
        [ 0.,  0.,  0., ...,  0.,  0.,  0.],
        ..., 
        [ 0.,  0.,  0., ...,  0.,  0.,  0.],
        [ 0.,  0.,  0., ...,  0.,  0.,  0.],
        [ 0.,  0.,  0., ...,  0.,  0.,  0.]])

具有180个标量值的方法(来自NetworkX),如下所示:

In[2]: G.edges(data=True)
Out[2]: 
[(0, 1, 1.0),
 (0, 10, 1.0),
 (1, 11, 1.0),
 (1, 2, 1.0),
 (2, 3, 1.0),... ]

我想将矩阵中的每一列乘以G.edges()中相应元组的第三个元素(这里有一个小例子:所有值都是1.0),所以我所做的是:

U.todense() #U.shape[0]=100 (rows); U.shape[1]=180 (columns)
W=U
W.todense()

for j in range(0, U.shape[1]):
    W[:][j]=U[:][j]*G.edges(data=True)[j][2]

我错过了什么,因为我收到了这个错误?

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-104-3a2b00447c19> in <module>()
     21 
     22 for j in range(0, U.shape[1]):
---> 23     W[:][j]=U[:][j]*G.edges(data=True)[j][2]
     24 

    ...
    ...
    ...
IndexError: index out of bounds: 0 <= 100 <= 100, 0 <= 101 <= 100, 100 <= 101

0 个答案:

没有答案