Büyük bir seyrek matrisin satırlarını normalleştiren bir işlev yazmak istiyorum (birebir olduğu gibi). Bir Scipy Sparse Matrix'i normalize etmenin etkili yolu
File "/usr/lib/python2.6/dist-packages/scipy/sparse/base.py", line 325, in __div__
return self.__truediv__(other)
File "/usr/lib/python2.6/dist-packages/scipy/sparse/compressed.py", line 230, in __truediv__
raise NotImplementedError
herhangi makul basit çözümler var mıdır:
from pylab import *
import scipy.sparse as sp
def normalize(W):
z = W.sum(0)
z[z < 1e-6] = 1e-6
return W/z[None,:]
w = (rand(10,10)<0.1)*rand(10,10)
w = sp.csr_matrix(w)
w = normalize(w)
Ancak bu şu istisna verir? this numaralı telefonu inceledim, ancak bölümün nasıl yapıldığını hala belirsiz hâle getiriyorum.
eşittir Bu temelde bir kopyasıdır: http: //stackoverflow.c om/questions/12237954/çarpma-elemanları-in-a-seyrek-dizi-satır-in-matris ile satır sıralı çarpma veya bölme bir satır olup olmadığı önemli değildir. Tabii ki birisi daha iyi bir cevabı varsa, harika :) – seberg
Harika - teşekkürler! – sterne
Katılmıyorum, bu farklı bir sorundur. İşaret ettiğin yineleme, eleman-bilge çoğaltır, oysa bu soru, her sırayı farklı bir değere bölmek ister (aynı değerde sıfır olmayan elemanlar yerine). Aaron McDaid'in aşağıdaki çözümü verimli bir şekilde çalışmalı (ve herhangi bir verinin kopyalanmasını gerektirmez). – conradlee