operasi titik pada matriks scipy.sparse

Apakah mungkin untuk menerapkan misalnya numpy.exp atau operator titik serupa ke semua elemen dalam scipy.sparse.lil_matrix atau format matriks renggang lainnya?

import numpy
from scipy.sparse import lil_matrix

x = numpy.ones((10,10))
y = numpy.exp(x)

x = lil_matrix(numpy.ones((10,10)))
# y = ????

numpy.exp(x) atau scipy.exp(x) menghasilkan AttributeError, dan numpy.exp(x.data) menghasilkan yang sama.

terima kasih!


person hannes    schedule 25.03.2011    source sumber
comment
Saya pikir saat ini ini tidak dibuat untuk berfungsi dalam format matriks renggang mana pun. Secara pribadi, menurut saya fungsi sparse yang terpisah harus dibuat daripada memperlambat fungsi biasa. Solusinya, seperti yang ditunjukkan oleh Olivier, pada dasarnya adalah mengonversi ke format renggang lainnya dan bekerja pada atribut data. Atribut data dari matriks lil tidak berfungsi untuk ini karena ini adalah objek bertipe array.   -  person Justin Peel    schedule 25.03.2011


Jawaban (1)


Saya tidak tahu detail lengkapnya, tetapi mengonversi ke tipe lain berfungsi, setidaknya saat menggunakan array elemen bukan nol:

xcsc = x.tocsc()
numpy.exp(xcsc.data) # works
person Olivier Verdier    schedule 25.03.2011
comment
Ya. Seperti yang tertulis di dokumen docs.scipy.org/ doc/scipy/reference/generated/ format lil terutama dimaksudkan untuk digunakan sebagai metode untuk membangun array jarang yang tidak melakukan operasi. Dokumen merekomendasikan melakukan konversi ini setelah array dibuat. - person Paul; 25.03.2011