Я пытаюсь векторизовать кусочно-определенную функцию в 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)
.