2017-11-08 1 views
0

Das ist so ein einfaches Konzept, aber überraschenderweise konnte ich keine Threads darauf finden. Grundsätzlich bin ich neugierig, ob es einen Operator/eine Transformation gibt, die effektiv einen Teil der auf Null zentrierten Zahlenzeile entfernt.Teil der Zahlenzeile entfernen - aka Ursprung Übersetzung in beide Richtungen

Nehmen wir zum Beispiel an, wir haben eine Liste: x = [1, 2, -1, -2] und möchten die Transformation anwenden. Wenn der Schrumpf bei 1,5 auftritt, dann wäre die Ausgabe out = [0.0, 0.5, 0.0, -0.5] macht das Sinn? Entsprechender Code ist unten gezeigt, ich bin nur neugierig, ob es einen aktuellen Namen für diese & einen bestehenden Betreiber gibt.

def operator(list, shrinkValue): 
     # assume it's numpy list 
     sign = np.sign(list) 
     list -= sign * shrinkValue # translate towards zero 
     idx = (sign * list) < 0.0 # get indices that passed the new zero 
     list[idx] = 0.0 
     return list 
+0

würde nicht eine Zahl um 1,5 schrumpfen, wie die Nummer eins würde es ergeben "-0,5"? – Cyzanfar

+0

Nicht sicher über einen Namen, aber hier ist eine einzeilige Version davon, wenn es hilft - '[max (ist, 0) wenn i> 0 sonst min (i + s, 0) für i in x]' – Peter

+0

@Cyzanfar die Punkt ist, dass es in Null absorbiert wird – Toby

Antwort

0

Wenn Sie nicht einmal einen Namen für eine Operation kennen, scheint es unwahrscheinlich, dass sie in der Sprache enthalten ist. Dies ist der Fall mit Ihrer seltsamen Operation "verkleinern und absorbieren" und Python/numpy.

Verwandte Themen