遍历两个NumPy数组并返回1维数组

2024-03-28 15:04:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常有一个函数,返回一个单一的值,如最大值或整数。然后我想迭代另一个参数。这里是一个使用抛物线的小例子。我不认为它的广播,因为我只想要1D阵列。在这种情况下,它的最大值。一个真实世界的例子是太阳能电池的最大功率点作为光强度的函数,但原理与这个例子相同。你知道吗

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,然后使用矢量化但我的理解是这并不能让代码更快。你知道吗


Tags: the方法函数参数电池parameternp情况
1条回答
网友
1楼 · 发布于 2024-03-28 15:04:34

将其中一个数组扩展到2D,然后让^{}以矢量化的方式执行这些外部加法-

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

或者,显式使用外加法-

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

相关问题 更多 >