[SciPy-dev] Trouble with sparse complex matrices
Nils Wagner
nwagner at iam.uni-stuttgart.de
Mon Oct 9 07:00:24 EDT 2006
Robert Cimrman wrote:
> Nils Wagner wrote:
>
>> Hi all,
>>
>> I have constructed a 2x2 lil_matrix and added some complex values to it.
>> The imaginary is neglected for some reason.
>>
>> from scipy import *
>> A = sparse.lil_matrix((2,2))
>> A[:,1] = random.rand(2)+1j*random.rand(2)
>> A[1,:] = random.rand(2)+1j*random.rand(2)
>> print A.real
>> print A.imag
>> print A
>> A = A.todense()
>> print 'The imiginary part of A is missing'
>> print A
>>
>>
>
> In [1]:A = sp.lil_matrix((2,2))
> In [2]:A
> Out[2]:
> <2x2 sparse matrix of type '<type 'numpy.float64'>'
> with 0 stored elements in LInked List format>
>
> In [3]:A[:,1] = rand(2)+1j*rand(2)
> In [4]:A[1,:] = rand(2)+1j*rand(2)
> In [8]:A
> Out[8]:
> <2x2 sparse matrix of type '<type 'numpy.float64'>'
> with 3 stored elements in LInked List format>
>
> --------------------
> - so here the type of the matrix is still real! I think you have found
> another bug... In the meantime, you can use the code below:
> --------------------
>
> In [15]:A = sp.lil_matrix((2,2), dtype = nm.complex128)
>
> In [16]:A
> Out[16]:
> <2x2 sparse matrix of type '<type 'numpy.complex128'>'
> with 0 stored elements in LInked List format>
>
> In [17]:A[:,1] = rand(2)+1j*rand(2)
>
> In [18]:A[1,:] = rand(2)+1j*rand(2)
>
> In [19]:A
> Out[19]:
> <2x2 sparse matrix of type '<type 'numpy.complex128'>'
> with 3 stored elements in LInked List format>
>
> In [20]:print A
> (0, 1) (0.958469152451+0.477931946516j)
> (1, 0) (0.945332109928+0.92267626524j)
> (1, 1) (0.734181404114+0.921519994736j)
>
> In [21]:A.real
> Out[21]:
> <2x2 sparse matrix of type '<type 'numpy.float64'>'
> with 3 stored elements (space for 3)
> in Compressed Sparse Column format>
>
> In [22]:print A.real
> (1, 0) 0.945332109928
> (0, 1) 0.958469152451
> (1, 1) 0.734181404114
>
> In [23]:print A.imag
> (1, 0) 0.92267626524
> (0, 1) 0.477931946516
> (1, 1) 0.921519994736
>
> In [24]:A = A.todense()
>
> In [25]:print A
> [[ 0.00000000e+00+0.j 9.58469152e-01+0.47793195j]
> [ 9.45332110e-01+0.92267627j 7.34181404e-01+0.92151999j]]
> _______________________________________________
> Scipy-dev mailing list
> Scipy-dev at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-dev
>
Hi Robert,
Thank you very much for your explanation and workaround !
Cheers,
Nils
More information about the SciPy-Dev
mailing list