向量化零散定义的函数(numpy)

时间:2018-10-21 14:12:55

标签: python numpy if-statement vectorization piecewise

我试图向量化Python中的分段定义函数。我要定义的函数如下:

Piecewise defined function

我试图将其定义为:

def g(x,n,w):
    global y
    for i in range(n):
        if i+w*i < x < w*i +i+1:
            y=x-w*i
        elif i + w*(i-1)<=x<= i + w*i:
            y=i
    return(y)

当我打电话时它似乎正在工作。例如,如果我写:

n=10
w=1
s=lambda x:g(x,n,w)

然后函数s似乎在执行我认为应该执行的操作。但是,我想将其应用于整个向量,为此,我想可以使用numpy函数“ vectorize”:

import numpy as np
x=np.linspace(0,4,20)
sv=np.vectorize(s)

但是,如果我将函数sv应用于向量x,它将仅返回整数值。例如对于0<=t<1s(t)=t,但是如果相同的t是向量x的一部分,它将是0中的sv(x)

0 个答案:

没有答案
相关问题