Jak podnieść macierz scipy.sparse
do mocy, elementowo? numpy.power
powinny, według its manual to zrobić, ale to nie na macierzach rzadkich:Elementarna moc scipy.sparse matrix
>>> X
<1353x32100 sparse matrix of type '<type 'numpy.float64'>'
with 144875 stored elements in Compressed Sparse Row format>
>>> np.power(X, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../scipy/sparse/base.py", line 347, in __pow__
raise TypeError('matrix is not square')
TypeError: matrix is not square
sam problem z X**2
. Konwersja na gęstą szyk działa, ale marnuje cenne sekundy.
Miałem ten sam problem z np.multiply
, który rozwiązałem przy użyciu metody rzadkiej macierzy multiply
, ale wydaje się, że nie ma metody pow
.
Nie jestem wystarczająco zaznajomiony z numpy, aby powiedzieć ci odpowiedź, ale twój kod nie jest sprzeczny z dokumentacją. Drugi argument do numpy.power nie powinien być liczbą, ale inną macierzą. – RoundTower
Wygląda na to, że wywołuje metodę obiektu "__pow__", która próbuje wyrównać całą macierz, zamiast wykonywać ją w sposób elementowy. To się nie udaje, ponieważ, jak to się mówi, macierz nie jest kwadratowa. –
@RoundTower: właściwie, drugi element powinien być tablicą, która nie jest taka sama jak macierz w Numpy, ale skalar jest taki sam jak tablica '(1,)' lub '(1,1)' dla w celach 'numpy.power' na gęstej tablicy. –