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

标签 python python-3.x numpy

在 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/

相关文章:

python - 阻止 PyCharm 的自动完成覆盖我光标前的代码

python - 如何在大型 python 项目中构建导入

python - 从 URL 中查找字符串中的所有匹配词

python - 在 2d numpy 数组的每一行中找到最小的非零值

python - Numpy 图像切片返回黑色补丁/错误值

python - 使用python PIL粘贴时黑屏

python - Hadoop流作业执行中映射器的“Text file busy”错误

python - 为什么我可以在 Mac OS X 上使用 Cython 编译为 C 但不能编译为 C++

python - 为什么要检查 cls 是否是 __subclasshook__ 中的类?

numpy - python : Converting a numpy matrix to a grayscale image