【发布时间】:2015-04-15 22:58:56
【问题描述】:
在 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解决方案,但我问的是直接解决方案。 -
不转换为
list拳头。我忘了提。
标签: python python-3.x numpy