[SciPy-user] math operations on sparse matrices
Nathan Bell
wnbell at gmail.com
Sat Feb 21 20:20:21 EST 2009
On Sat, Feb 21, 2009 at 2:28 PM, <josef.pktd at gmail.com> wrote:
> I have a (dok) sparse distance matrix and I would like to take the
> exponential of the distances
>
> The direct method doesn't work
>>>> Mexp = np.exp(-M)
> Traceback (most recent call last):
> File "<pyshell#31>", line 1, in <module>
> Mexp = np.exp(-M)
> AttributeError: exp
>
> The following seems to work. What is the recommended way for doing
> these transformations?
> I didn't see anything in the docs.
>
>>>> T1 = ssp.KDTree(xs3[::k,:],leafsize=2)
>>>> M = T1.sparse_distance_matrix(T1, r)
>>>> Mexp = M.copy()
>>>> for k,v in M.items():
> Mexp[k]=np.exp(-v)
>
Does the following solve your problem?
>>> M = M.tocsr()
>>> M.data = np.exp(M.data)
I suppose we could add a transform(A, fn) function to scipy.sparse to
codify this sort of thing. Any suggestions? The difference here is
that fn() would only be applied to the nonzero entries of A (and to
the explicit zeros, if they are also present).
I'd rather not encourage people to manipulate the underlying CSR/CSC
representations directly, so tranform() would be a nice way to expose
this.
--
Nathan Bell wnbell at gmail.com
http://graphics.cs.uiuc.edu/~wnbell/
More information about the SciPy-User
mailing list