Integer From A Float List?!?

George Sakkis gsakkis at rutgers.edu
Fri Mar 4 19:50:11 EST 2005


"Bill Mill" <bill.mill at gmail.com> wrote in message
news:mailman.3354.1109973341.22381.python-list at python.org...
> On Fri, 4 Mar 2005 22:35:48 +0100, andrea_gavana at tin.it
> <andrea_gavana at tin.it> wrote:
> > Hello NG,
> >
> >     I was wondering if there is a way to obtain, from a list of floats,
> > a list of integers without loops. Probably is a basic question, but I can't
> > find an answer... I have had my eyes blinded by Matlab for years, but now
> > that I discovered Python+wxPython there seems to be no limit on what one
> > can do with these 2 tools. Anyway, following the Matlab style, I would like
> > to do something like this:
> >
> > matrix = [1.5, 4.3, 5.5]
> > integer_matrix = int(matrix)       (float for Matlab)
>
> You're going to have to use loops. I don't know how Matlab can do it
> without them, unless it maintains the matrix as a list of floats and
> simply *views* it as a list of ints. More likely, it simply hides the
> loop away from you. Anyway, here's some ways to do it:
>
> preferable: int_matrix = [int(x) for x in matrix]
> old way: int_matrix = map(int, matrix)
> explicit:
> int_matrix = []
> for x in matrix:
>     int_matrix.append(int(x))
>
> Any of these methods should be neither really slow nor really fast,
> but the list comprehension should be the fastest (I think). Anyway, if
> you're going to be doing lots of large matrices, and want some of your
> old matlab stuff, check out numpy and numarray at
> http://numeric.scipy.org/ .
>
> Also, somebody was recently posting on here about a python <-> matlab
> bridge that they developed; you should search the archives for that
> (it was in february, I think).
>
> And, finally, when doing scientific stuff, I found IPython
> (http://ipython.scipy.org/) to be an invaluable tool. It's a much
> improved Python interpreter.
>
> Peace
> Bill Mill
> bill.mill at gmail.com


Using numpy, your example would be:
>>> from Numeric import array
>>> matrix = array([1.5, 4.3, 5.5])
>>> integer_matrix = matrix.astype(int)

George





More information about the Python-list mailing list