【发布时间】:2020-02-29 15:26:42
【问题描述】:
我确信这个问题已经在某个地方提出过,但我没有正确的关键字来找到解决方案...
我的问题是改进以下代码:
I = np.array([True,False])
x = np.array([1,2])
result = f(x) * (1 - I) + g(x) * I
实际上,I 被用作条件:如果 I 为 True,则执行第一件事,否则执行第二件事。 f 和 g 假设是 (2,) -> (2,) 函数。
有没有一种方法可以让我编写这样的代码,使 f 和 g 两个函数仅在需要时才计算,而不是在任何地方计算?这里我有 2 个值,但在应用程序中我有数百个并且这些函数很昂贵。
【问题讨论】:
-
如果我正确理解了文档,numpy.where 不会在不需要时避免计算 g(x):它会计算所有内容然后选择。所以这就是我需要的......
-
g和f是(2,)到(2,)是什么意思?如果我理解正确,您希望他们每个人在示例中只处理一个输入,对吧?
标签: python numpy conditional-statements broadcast