gibt es eine einfache Methode um Werte in einem beliebigen Intervall, z.B.
Code: Alles auswählen
x = np.array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
Um x auf [0,2pi] abzubilden, muss man einfach nur
Code: Alles auswählen
x % (2*np.pi)
Code: Alles auswählen
x = np.array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
Code: Alles auswählen
x % (2*np.pi)
Code: Alles auswählen
import numpy as np
x = np.array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
def remap(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
remap(x, min(x), max(x), -np.pi, np.pi)
"""
array([-3.14159265, -2.61799388, -2.0943951 , -1.57079633, -1.04719755,
-0.52359878, 0. , 0.52359878, 1.04719755, 1.57079633,
2.61799388, 3.14159265])
"""
Code: Alles auswählen
def remap(x, out_min, out_max):
in_min = min(x)
return (x - min(x)) * (out_max - out_min) / (max(x) - min(x)) + out_min
print(remap(x, -np.pi, np.pi))
# [-3.14159265 -2.61799388 -2.0943951 -1.57079633 -1.04719755 -0.52359878
# 0. 0.52359878 1.04719755 1.57079633 2.61799388 3.14159265]
Code: Alles auswählen
x = array([-6,-5,-4,-3,-2,-1,0,1,2,3,5,6])
x % (2*pi)
--> array([0.28318531, 1.28318531, 2.28318531, 3.28318531, 4.28318531,
5.28318531, 0. , 1. , 2. , 3. ,
5. , 6. ])