gpt4 book ai didi

python - 在python 3中将 map 对象转换为numpy数组

转载 作者:IT老高 更新时间:2023-10-28 20:39:00 26 4
gpt4 key购买 nike

在 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 的额外调用。

最佳答案

除了@jonrsharpe 已经指出的有效解决方案之外,另一种选择是使用 np.fromiter :

>>> import numpy as np    
>>> f = lambda x: x**2
>>> seq = map(f, range(5))
>>> np.fromiter(seq, dtype=np.int)
array([ 0, 1, 4, 9, 16])

关于python - 在python 3中将 map 对象转换为numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28524378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com