【问题标题】:Copying values of a numpy array into specific location of sparse matrix将 numpy 数组的值复制到稀疏矩阵的特定位置
【发布时间】:2016-05-13 20:06:04
【问题描述】:

所以我试图将一个 numpy 数组中的值复制到一个稀疏矩阵中。第一个数组如下所示:

results_array = [[  3.00000000e+00   1.00000000e+00   4.00000000e+00   1.00000000e+03]
[  6.00000000e+00   2.00000000e+00   5.00000000e+00   7.00000000e+02]
[  1.60000000e+01   4.00000000e+00   8.00000000e+00   1.00000000e+03]}

第二个值(或results_array[i][1])指示列ID,第三个值(results_array[i][2])指示行ID,第四个值(results_array[i][3])指示该行、列对的值。

到目前为止,我拥有的是这样的:

for i in result_array:
sparse_matrix = csc_matrix((i[3],(i[1],i[2])), shape=(14,14))
print "last array", sparse_matrix

我得到的输出是:

File "C:/Users/Andrew/Google Drive/Uni/Final Year/Research Project/Programming/Mine/First UEA/xl_optim/Runestone 2.py", line 13, in <module>
sparse_matrix = csc_matrix((i[3],(i[1],i[2])), shape=(14,14))
File "C:\Users\Andrew\Anaconda2\lib\site-packages\scipy\sparse\compressed.py", line 48, in __init__
other = self.__class__(coo_matrix(arg1, shape=shape))
File "C:\Users\###\Anaconda2\lib\site-packages\scipy\sparse\coo.py", line 182, in __init__
self._check()
File "C:\Users\###\Anaconda2\lib\site-packages\scipy\sparse\coo.py", line 219, in _check
nnz = self.nnz
File "C:\Users\###\Anaconda2\lib\site-packages\scipy\sparse\coo.py", line 194, in getnnz
nnz = len(self.data)
TypeError: len() of unsized object

我认为我需要先创建稀疏矩阵,然后将值迭代地添加到它(我想像 .append 但到矩阵中的特定位置)但我不知道如何创建空稀疏矩阵,然后为其赋值。

如果您需要进一步说明,请告诉我。谢谢!

【问题讨论】:

    标签: python arrays numpy scipy


    【解决方案1】:

    您传递给csc_matrix 的元组中的第一个元素需要是一个值向量,而您传递的是一个整数。更根本的是,您尝试在循环中多次调用 csc_matrix 构造函数,以便在每次迭代时覆盖 sparse_matrix

    你想调用csc_matrix一次,每个参数都有一个向量,像这样:

    values = results_array[:, 3]
    row_idx = results_array[:, 2]
    col_idx = results_array[:, 1]
    
    sparse_array = csc_matrix((values, (row_idx, col_idx)), shape=(14, 14))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多