- **Python**
(*http://www.velocityreviews.com/forums/f43-python.html*)

- - **Tuples from List**
(*http://www.velocityreviews.com/forums/t399610-tuples-from-list.html*)

Tuples from List While it should be easy for me to get what I need from a list, it's
proving to be more difficult than I expected. I start with this list: [ 6.24249034e-01+0.j 5.11335982e-01+0.j 3.67333773e-01+0.j 3.01189122e-01+0.j 2.43449050e-01+0.j 1.82948476e-01+0.j 1.43655139e-01+0.j 9.91225725e-02+0.j] and I want a list of floats of only the first 6 digits for each value. If I write: for i in listname: print i I get this: (0.624249034424+0j) (0.511335982206+0j) (0.367333773283+0j) (0.301189121704+0j) (0.243449050439+0j) (0.182948475822+0j) (0.14365513894+0j) (0.0991225725344+0j) I know it's embarrassingly simple, but the correct syntax eludes my inexperienced mind. What I want is a list [0.62424, 0.51133, ...] so that I can normalize those values. What is the correct syntax, please? Rich |

Re: Tuples from Listrshepard@nospam.appl-ecosys.com writes:
> [ 6.24249034e-01+0.j 5.11335982e-01+0.j 3.67333773e-01+0.j > 3.01189122e-01+0.j 2.43449050e-01+0.j 1.82948476e-01+0.j > 1.43655139e-01+0.j 9.91225725e-02+0.j] > > and I want a list of floats of only the first 6 digits for each value. If I > write: > for i in listname: > print i If you mean the first six digits of the real part and they're all < 1, for z in listname: print '%.5f' % z.real |

Re: Tuples from Listrshepard@nospam.appl-ecosys.com wrote:
> While it should be easy for me to get what I need from a list, it's > proving to be more difficult than I expected. > > I start with this list: > > [ 6.24249034e-01+0.j 5.11335982e-01+0.j 3.67333773e-01+0.j > 3.01189122e-01+0.j 2.43449050e-01+0.j 1.82948476e-01+0.j > 1.43655139e-01+0.j 9.91225725e-02+0.j] No, that's a numpy array. > and I want a list of floats of only the first 6 digits for each value. If I > write: > for i in listname: > print i > > I get this: > > (0.624249034424+0j) > (0.511335982206+0j) > (0.367333773283+0j) > (0.301189121704+0j) > (0.243449050439+0j) > (0.182948475822+0j) > (0.14365513894+0j) > (0.0991225725344+0j) Those aren't tuples, but complex numbers. > I know it's embarrassingly simple, but the correct syntax eludes my > inexperienced mind. What I want is a list [0.62424, 0.51133, ...] so that I > can normalize those values. > > What is the correct syntax, please? # Extract the real components (since the imaginary components are all 0): eigvals = eigvals.real # Normalize the eigenvalues: eigvals /= eigvals.sum() -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco |

Re: Tuples from Listrshepard@nospam.appl-ecosys.com writes:
> While it should be easy for me to get what I need from a list, it's > proving to be more difficult than I expected. > > I start with this list: > > [ 6.24249034e-01+0.j 5.11335982e-01+0.j 3.67333773e-01+0.j > 3.01189122e-01+0.j 2.43449050e-01+0.j 1.82948476e-01+0.j > 1.43655139e-01+0.j 9.91225725e-02+0.j] That's not correct syntax for a list. I assume, then, that it's not actual code from your program. > and I want a list of floats of only the first 6 digits for each value. You don't get to choose how many digits are represented in a float value; that's a property of the underlying floating-point implementation, and indeed will change depending on the actual value (since a float is a *binary* representation of a number, not decimal). Perhaps you are looking for the Decimal type: <URL:http://docs.python.org/lib/module-decimal.html> > for i in listname: > print i > > I get this: > [each item printed separately] > > I know it's embarrassingly simple, but the correct syntax eludes > my inexperienced mind. What I want is a list [0.62424, 0.51133, ...] > so that I can normalize those values. You can create a new list from any sequence value by using the constructor for the list type: >>> old_sequence = [12, 34, 56] >>> new_list = list(old_sequence) >>> new_list[0] 12 As for making a list containing different values (e.g. Decimal values), you might want a list comprehension: >>> from decimal import Decimal >>> old_sequence = [12, 34, 56] >>> new_list = [Decimal(value) for value in old_sequence] >>> new_list[0] Decimal("12") -- \ "I may disagree with what you say, but I will defend to the | `\ death your right to mis-attribute this quote to Voltaire." -- | _o__) Avram Grumer, rec.arts.sf.written, May 2000 | Ben Finney |

Re: Tuples from ListOn 2007-02-28, Robert Kern <robert.kern@gmail.com> wrote:
> No, that's a numpy array. Robert, That's where I went off. I forgot that I'm still dealing with a 1D NumPy array and not a list. No wonder I had such fits! > Those aren't tuples, but complex numbers. I have not seen the 'j' suffix before. That was throwing me. > # Extract the real components (since the imaginary components are all 0): > eigvals = eigvals.real That's so much easier than what I ended up doing, which was creating another variable and assigning to that an explicit cast to real of the array. > # Normalize the eigenvalues: > eigvals /= eigvals.sum() Now that's really nice! Thank you very much for today's lessons. I really appreciate them Rich |

All times are GMT. The time now is 04:52 AM. |

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.

SEO by vBSEO ©2010, Crawlability, Inc.