如何为 numpy 数组输入编写一个函数,其操作取决于输入的数值

问题描述 投票:0回答:1

该函数具有以下数学形式

f(x) = 1, if x<1
     = g(x), for 1<=x<10
     = 0, for x >=10

其中

g(x)
是一个简单函数。

如果输入是使用

float
if/else
,那么编写这样的函数很简单。如果输入是 numpy 数组,是否有一个简洁/高效的实现而无需显式循环?

python numpy numpy-ndarray
1个回答
0
投票

您可以使用

numpy.piecewise

x = np.linspace(0, 20, 30)
g = lambda x: -x

y = np.piecewise(x, [x<1, (1<=x)&(x<10), x>=10],
                    [lambda x: 1, g, lambda x: 0])

输出:

array([ 1.        ,  1.        , -1.37931034, -2.06896552, -2.75862069,
       -3.44827586, -4.13793103, -4.82758621, -5.51724138, -6.20689655,
       -6.89655172, -7.5862069 , -8.27586207, -8.96551724, -9.65517241,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ])
© www.soinside.com 2019 - 2024. All rights reserved.