gpt4 book ai didi

python - 二维 numpy 数组的映射函数

转载 作者:太空狗 更新时间:2023-10-30 01:24:21 25 4
gpt4 key购买 nike

我有一个函数 foo,它将一个 NxM numpy 数组作为参数并返回一个标量值。我有一个 AxNxM numpy 数组 data,我想在其上映射 foo 以给我一个长度为 A 的结果 numpy 数组。

目前,我正在这样做:

result = numpy.array([foo(x) for x in data])

它有效,但我似乎没有利用 numpy 的魔力(和速度)。有没有更好的办法?

我查看了 numpy.vectorizenumpy.apply_along_axis,但它们都不适用于二维数组的函数。

编辑:我正在对 24x24 图像 block 进行增强回归,所以我的 AxNxM 类似于 1000x24x24。我在上面称为 foo 的内容将类似 Haar 的功能应用于补丁(因此,计算量不是很大)。

最佳答案

如果 NxM 很大(比如 100),他们迭代 A 的成本将被分摊到几乎没有。

假设数组是 1000 X 100 X 100。

迭代是 O(1000),但内部函数的累积成本是 O(1000 X 100 X 100) - 慢 10,000 倍。 (注意,我的术语有点奇怪,但我知道我在说什么)

我不确定,但你可以试试这个:

result = numpy.empty(data.shape[0])
for i in range(len(data)):
result[i] = foo(data[i])

您可以在构建列表时节省大量内存分配……但循环开销会更大。

或者您可以编写循环的并行版本,并将其拆分到多个进程中。这可能会快很多,具体取决于 foo 的密集程度(因为它必须抵消数据处理)。

关于python - 二维 numpy 数组的映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2772661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com