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))
C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = map(int, floa ts)" 1000 loops, best of 3: 481 usec per loop
C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = [int(x) for x in floats]" 1000 loops, best of 3: 721 usec per loop
C:\>python -m timeit -s "floats = map(float, range(1000))" "ints = []" "for x in floats: ints.append(int(x))" 1000 loops, best of 3: 992 usec per loop
For builtin functions, map is usually the fastest option (and, IMO, the most readable). List comprehensions should be preferred to map + lambda, though.
Cheers, Nick.
-- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list