การดำเนินการแบบ pointwise บนเมทริกซ์ scipy.sparse

เป็นไปได้ไหมที่จะใช้ตัวอย่าง numpy.exp หรือตัวดำเนินการ pointwise ที่คล้ายกันกับองค์ประกอบทั้งหมดใน scipy.sparse.lil_matrix หรือรูปแบบเมทริกซ์กระจัดกระจายอื่น

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) หรือ scipy.exp(x) ให้ผลลัพธ์ AttributeError และ numpy.exp(x.data) ให้ผลลัพธ์เท่ากัน

ขอบคุณ!


person hannes    schedule 25.03.2011    source แหล่งที่มา
comment
ฉันคิดว่าปัจจุบันนี้ไม่ได้ถูกสร้างขึ้นมาเพื่อให้ทำงานในรูปแบบเมทริกซ์กระจัดกระจายใดๆ โดยส่วนตัวแล้ว ฉันคิดว่าควรจะสร้างฟังก์ชันกระจัดกระจายแยกกัน แทนที่จะทำให้ฟังก์ชันปกติช้าลง วิธีแก้ปัญหาชั่วคราว ดังที่แสดงโดย Olivier คือการแปลงเป็นรูปแบบกระจัดกระจายอื่นๆ และทำงานกับแอตทริบิวต์ data คุณลักษณะ data ของเมทริกซ์ lil ใช้ไม่ได้เนื่องจากเป็นอาร์เรย์ประเภทออบเจ็กต์   -  person Justin Peel    schedule 25.03.2011


คำตอบ (1)


ฉันไม่ทราบรายละเอียดทั้งหมด แต่การแปลงเป็นประเภทอื่นใช้งานได้ อย่างน้อยก็เมื่อใช้อาร์เรย์ขององค์ประกอบที่ไม่ใช่ศูนย์:

xcsc = x.tocsc()
numpy.exp(xcsc.data) # works
person Olivier Verdier    schedule 25.03.2011
comment
ใช่. ตามที่กล่าวไว้ในเอกสาร docs.scipy.org/ doc/scipy/reference/generated/ รูปแบบ lil มีวัตถุประสงค์หลักเพื่อใช้เป็นวิธีการในการสร้างอาร์เรย์แบบกระจายที่ไม่ดำเนินการ เอกสารแนะนำให้ทำการแปลงนี้เมื่อสร้างอาร์เรย์แล้ว - person Paul; 25.03.2011