【发布时间】:2011-02-15 21:22:59
【问题描述】:
我有一个函数foo,它将一个 NxM numpy 数组作为参数并返回一个标量值。我有一个 AxNxM numpy 数组 data,我想在其上映射 foo 给我一个长度为 A 的结果 numpy 数组。
目前,我正在这样做:
result = numpy.array([foo(x) for x in data])
它有效,但似乎我没有利用 numpy 魔法(和速度)。有没有更好的办法?
我查看过numpy.vectorize 和numpy.apply_along_axis,但它们都不适用于二维数组的函数。
编辑:我正在对 24x24 图像补丁进行增强回归,所以我的 AxNxM 类似于 1000x24x24。我在上面所说的 foo 将类似 Haar 的功能应用于补丁(因此,计算量不是很大)。
【问题讨论】:
-
可能有一种方法可以重新编码
foo,以便它可以接受任意维度的 numpy 数组,并将其计算应用于最后两个轴。但我们必须看看foo是如何编码的,才能提出具体的建议。 -
我添加了更多关于我的具体问题的详细信息。将
data保留原样,重新编码foo以获取索引参数,然后对其进行矢量化并将其映射到arange(len(x))上是否有意义?