【发布时间】: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 但到矩阵中的特定位置)但我不知道如何创建空稀疏矩阵,然后为其赋值。
如果您需要进一步说明,请告诉我。谢谢!
【问题讨论】: