首页 > 解决方案 > 有一些 numpy.map 吗?

问题描述

我可能在这里遗漏了一些明显的东西,但我遗漏了一个函数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(...)),但是它返回一个带有地图的单元素数组,因为它是唯一的条目 - 这就是为什么:为什么需要将地图类型转换为列表以将其分配给熊猫系列?

有没有更好的方法来实现我想要的?我正在寻找一种理想的方式,我可以使用 with joblib

标签: pythonnumpy

解决方案


如果我说得对,您需要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]]

推荐阅读