Re: Integer From A Float List?!?

Discussion in 'Python' started by Bill Mill, Mar 4, 2005.

  1. Bill Mill

    Bill Mill Guest

    On Fri, 4 Mar 2005 22:35:48 +0100,
    <> 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

    >
    > (In Matlab, "integer_matrix" is always a double anyway, here I would like
    > only to show the vector-matrix operation).
    >
    > Obviously, Python complains about:
    >
    > Traceback (most recent call last):
    > File "<interactive input>", line 1, in ?
    > TypeError: int() argument must be a string or a number
    >
    > I would like to avoid loops because, having been blinded by Matlab vector-matrix
    > abilities (and corresponding SLOW for-while loops operations), I tend to
    > think that also Python will be slow if I use loops.
    >
    > Does anyone have a suggestion (or maybe could anyone show me that I'm wrong
    > about loops?)
    >
    > Thanks you a lot.
    >
    > Andrea.
    >
    > --
    > http://mail.python.org/mailman/listinfo/python-list
    >
    Bill Mill, Mar 4, 2005
    #1
    1. Advertising

  2. "Bill Mill" <> wrote in message
    news:...
    > On Fri, 4 Mar 2005 22:35:48 +0100,
    > <> 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
    George Sakkis, Mar 5, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Andy
    Replies:
    7
    Views:
    6,248
    Roedy Green
    May 10, 2004
  2. bd
    Replies:
    0
    Views:
    614
  3. Replies:
    0
    Views:
    275
  4. Nick Coghlan

    Re: Integer From A Float List?!?

    Nick Coghlan, Mar 5, 2005, in forum: Python
    Replies:
    3
    Views:
    318
    Peter Otten
    Mar 6, 2005
  5. Carsten Fuchs
    Replies:
    45
    Views:
    1,525
    James Kanze
    Oct 8, 2009
Loading...

Share This Page