我可能忽略了一些显而易见的东西,但我缺少一个名为
目前,我会使用
(我已经尝试过
是否有更好的方法来实现我想要的结果?我正在寻找一种理想的方式,可以与
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(...))
,但它返回一个具有该映射作为唯一条目的一元数组 - 原因在于:为什么需要将一个映射类型转换为列表才能将其分配给pandas系列?)。是否有更好的方法来实现我想要的结果?我正在寻找一种理想的方式,可以与
joblib
一起使用。
np.frompyfunc
可以做到这一点。输出是一个对象dtype数组。在我的过去的时间测试中,它可以比等效的np.array([list comprehension])
快2倍。 - hpauljnp,array(list(map(func...,)))
中,list
只是运行map
,将值收集到列表中。array
然后将这些值连接成一个数组。主要的时间消耗是多次调用函数,而不是收集机制。这个话题经常出现,通常被描述为向量化或避免循环。 - hpauljnumpy_all_the_way
,它比array(list...)
替代方案稍微快一些。他使用的是Py2,因此不需要在map
中包装list
。 - hpaulj