Re: Can't apply Differences[] to a SparseArray[]?
- To: mathgroup at smc.vnet.net
 - Subject: [mg99380] Re: Can't apply Differences[] to a SparseArray[]?
 - From: dh <dh at metrohm.com>
 - Date: Mon, 4 May 2009 06:01:34 -0400 (EDT)
 - References: <gth5k4$f2k$1@smc.vnet.net>
 
Hi,
I can only guess why Differences does not work with sparse arrays. The 
reason may be that Differences needs neighboring elements.
A solution may be to extract the rules from a sparse array and change the 
rule accordingly. Here is an example:
============================
s = SparseArray[{5, 6, 7, 10^6} -> {10, 11, 12, 13}]
r = ArrayRules[s];
r /. HoldPattern[{i1_Integer} -> x1_] :>  ({i1} -> x1 - s[[i1 - 1]])
==============================
Daniel
jmay wrote:
> Mathematica newbie here.
> 
> I'd like to apply the Differences[] function to a sparse array.  Other
> list operations appear to work, but I'm seeing this:
> 
>     s = SparseArray[{5, 6, 7} -> {10, 11, 12}]
> 
>     Differences[s]
> 
>         Differences::list: List expected at position 1 in Differences
> [SparseArray[Automatic,{7},0,{1,{{0,3},{{5},{6},{7}}},{10,11,12}}]].
> 
> What is special about Differences?  I don't want to convert the sparse
> array to a regular list; my data set could have thousands or millions
> of missing elements.
> 
> Thanks,
> -Jason
>