gpt4 book ai didi

python - 迭代两个 numpy 数组返回一维数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:08 25 4
gpt4 key购买 nike

我经常有一个函数返回单个值,例如最大值或积分。然后我想迭代另一个参数。这是一个使用抛物线的简单示例。我不认为它是广播,因为我只想要一维数组。在这种情况下它的最大值。现实世界的示例是太阳能电池的最大功率点与光强度的函数关系,但原理与此示例相同。

import numpy as np
x = np.linspace(-1,1) # sometimes this is read from file
parameters = np.array([1,12,3,5,6])
maximums = np.zeros_like(parameters)

for idx, parameter in enumerate(parameters):
y = -x**2 + parameter
maximums[idx] = np.max(y) # after I have the maximum I don't need the rest of the data.

print(maximums)

在 Python/Numpy 中执行此操作的最佳方法是什么?我知道一种简化方法是将函数设为 def,然后使用 np.vectorize,但我的理解是它不会使代码更快。

最佳答案

将其中一个数组扩展到2D,然后让broadcasting以矢量化方式进行外部添加 -

maximums = (-x**2 + parameters[:,None]).max(1).astype(parameters.dtype)

或者,显式使用外部加法 -

np.add.outer(parameters, -x**2).max(1).astype(parameters.dtype)

关于python - 迭代两个 numpy 数组返回一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47207331/

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