我可能在这里遗漏了一些明显的内容,但是我遗漏了一个函数numpy.map
。这将与Python的map
函数相同,但是将输出收集在numpy
数组中。例如,我可能有一个图像生成器genImage(i)
,它可以根据单个输入生成2D图像(大小为(m, n)
),并且我想将range(k)
输入到生成器函数中,获取(k, m, n)
数组。
当前,我将使用numpy.array(list(map(genImage, range(k)))
,但我认为这种转换为列表的效率很低(我的最终数组大小约为50 GB)。因此,我正在寻找numpy.map(genImage, range(k))
,它与numpy.fromiter
类似,但是要寻找迭代器的多维输出。
(我尝试过np.array(map(...))
,但是它返回了一个只有元素的映射数组,因为它是唯一的入口-这就是为什么:Why is it required to typecast a map into a list to assign it to a pandas series?)
有没有更好的方法来实现我想要的?我正在寻找一种理想的方式,可以与joblib
一起使用。
答案 0 :(得分:1)
如果我答对了,您需要column_stack可以这样工作:
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
a = np.column_stack((range(3), a))
a
[[0 1 2]
[1 3 4]
[2 5 6]]