Векторизация кусочно-определенной функции (numpy) - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь векторизовать кусочно-определенную функцию в Python.Я хочу определить следующую функцию:

Кусочно-определенная функция

Я пытался определить ее как:

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<1, s(t)=t, но если тот же t является частью вектора x, он будет 0 в sv(x).

...