2015-11-07 2 views
0

У меня есть матрицы Gx и Gy оба разреженных типа coo.Невозможно преобразовать разреженную матрицу в плотную.

я выполнить следующие операции с ними:

A = np.hstack((Gx.transpose(),Gy.transpose())) 
B = np.vstack((Gx,Gy)) 

L = np.dot(A,B) 

Я хочу, чтобы визуализировать решение, C, поэтому я использовал C.toarray() и C.todense(), но ответ заключается в следующем:

In [391]: C 
Out[391]: 
    array([ <16x16 sparse matrix of type '<type 'numpy.float64'>' 
with 64 stored elements in Compressed Sparse Row format>], dtype=object) 


In [392]: C.toarray() 
Traceback (most recent call last): 
    File "<ipython-input-390-86c90f8dce51>", line 1, in <module> 
    C.toarray() 
AttributeError: 'numpy.ndarray' object has no attribute 'toarray' 

Как я мог сделать, чтобы увидеть матрицу C в плотной форме?

ответ

3

От:

array([ <16x16 sparse matrix of type '<type 'numpy.float64'>' 

с 64 элементами, хранящихся в сжатом формате разреженных Row>], DTYPE = объект)

я сделать вывод, что C является элементом 1 плотный массив с dtype=object. Этот один элемент является разреженной матрицей.

Так что я ожидаю, что

C[0].toarray() 

будет работать. Как говорит ошибка, массив numpy не имеет метода toarray. Но в этом случае его элемент делает.

С Gx и Gy редкие, то вам нужно использовать редкие версии hstack и vstack, а не в numpy версии. Проверьте тип A и B. Я - это многочисленные массивы, а не разреженные матрицы.


Посмотрите, что происходит, когда я использую np.hstack с парой разреженных матриц:

In [70]: M=sparse.csr_matrix([[0,1,2],[2,3,4]]) 
In [71]: np.hstack([M,M]) 
/usr/lib/python3/dist-packages/scipy/sparse/compressed.py:298: SparseEfficiencyWarning: Comparing sparse matrices using >= and <= is inefficient, using <, >, or !=, instead. 
    "using <, >, or !=, instead.", SparseEfficiencyWarning) 
Out[71]: 
array([ <2x3 sparse matrix of type '<class 'numpy.int32'>' 
    with 5 stored elements in Compressed Sparse Row format>, 
     <2x3 sparse matrix of type '<class 'numpy.int32'>' 
    with 5 stored elements in Compressed Sparse Row format>], dtype=object) 

Результат не разреженным, а его плотная с 2-мя редкими элементами.

Смежные вопросы