In Python 2 I could do the following:
import numpy as np
f = lambda x: x**2
seq = map(f, xrange(5))
seq = np.array(seq)
print seq
# prints: [ 0 1 4 9 16]
In Python 3 it does not work anymore:
import numpy as np
f = lambda x: x**2
seq = map(f, range(5))
seq = np.array(seq)
print(seq)
# prints: <map object at 0x10341e310>
How do I get the old behaviour (converting the map
results to numpy
array)?
Edit: As @jonrsharpe pointed out in his answer this could be fixed if I converted seq
to a list first:
seq = np.array(list(seq))
but I would prefer to avoid the extra call to list
.
question from:
https://stackoverflow.com/questions/28524378/convert-map-object-to-numpy-array-in-python-3 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…