在Python 2中,我可以做如下操作:
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]
在Python 3中它不再起作用:
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>
我该如何获得旧的行为(将map
函数的结果转换为numpy
数组)?
编辑:正如@jonrsharpe在他的答案中指出的那样,如果我首先将seq
转换为列表,这个问题就可以解决:
seq = np.array(list(seq))
但我更希望避免对list
进行额外的调用。
list
的解决方案,但我想要一个直接的解决方案。 - btellist
。我忘了提醒。 - btel