Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with substitutions in SparseArray?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56908] Re: [mg56824] Problem with substitutions in SparseArray?
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Tue, 10 May 2005 03:42:10 -0400 (EDT)
  • References: <200505070816.EAA20188@smc.vnet.net> <6d5b1cedba1e6f5bbfe7eb5fd2f511bc@mimuw.edu.pl>
  • Sender: owner-wri-mathgroup at wolfram.com

You are right, I was careless so here is what I should have done:


m = SparseArray[{{a, 0}, {0, 0}}];


SparseArray @@ {ArrayRules[m], Dimensions[m]} /. a -> 1;


Normal[%]


{{a, 0}, {0, 0}}

Andrzej Kozlowski

On 7 May 2005, at 20:16, Andrzej Kozlowski wrote:

> On 7 May 2005, at 17:16, Enrico Arrigoni wrote:
>
>>
>> Substitutions don't seem to work in SparseArrays
>>
>> try:
>>
>> m = SparseArray[{{a,0},{0,0}}];
>> ms = m/.a->1.;
>> Normal[ms]
>>
>> RESULT:
>>
>> {{a, 0}, {0, 0}}
>>
>
> The reason is that SparseArrays are atoms:
>
>
> m=SparseArray[{{a,0},{0,0}}];
>
>
> AtomQ[m]
>
> True
>
> You cannot change the structure of atoms by applying rules to their 
> "components" because Atoms "do not have components". Compare thsi 
> with, for example
>
> Complex[2,3]/.(2->5)
>
>
> 2+3 I
>
> (Please no more discussions whether complex numbers are "really" atoms 
> or not).
>
> To apply a rule to an atom you have to apply it to the "whole thing", 
> e.g.
>
>
> (n = m /. HoldPattern[SparseArray[x__, {y__, {a}}]] :>
>     SparseArray[x, {y, {1}}])//InputForm
>
>
> SparseArray[Automatic, {2, 2}, 0, {1, {{0, 1, 1}, {{1}}},
>   {1}}]
>
>
> This is of course not very convenient, but fortunately there is an 
> easy way to do the same thing:
>
> n=SparseArray[ArrayRules[m]/.a->1]//InputForm
>
>
> SparseArray[Automatic, {1, 1}, 0, {1, {{0, 1}, {{1}}},
>   {1}}]
>
>
> Andrzej Kozlowski
> Chiba, Japan
> http://www.akikoz.net/andrzej/index.html
> http://www.mimuw.edu.pl/~akoz/
>


  • Prev by Date: Re: StringCases
  • Next by Date: Re: Re: Simplifying Log to ArcCos Expressions
  • Previous by thread: Re: Problem with substitutions in SparseArray?
  • Next by thread: Re: Re: Problem with substitutions in SparseArray?