Ich muss einige Matlab-Code in Python 3 übersetzen und ich stoße oft auf Bereiche des Formulars Start: Schritt: Stopp. Wenn diese Argumente alle Ganzzahlen sind, übersetze ich diesen Befehl einfach mit np.arange(), aber wenn einige der Argumente float sind, insbesondere der step-Parameter, bekomme ich in Python nicht die gleiche Ausgabe. Zum BeispielMatlab Bereich in Python
7:8 %In Matlab
7 8
Wenn ich will es in Python übersetzen verwende ich einfach:
np.arange(7,8+1)
array([7, 8])
Aber wenn ich, sagen wir mal:
7:0.3:8 %In Matlab
7.0000 7.3000 7.6000 7.9000
ich es nicht übersetzen kann unter Verwendung der gleichen Logik:
np.arange(7, 8+0.3, 0.3)
array([ 7. , 7.3, 7.6, 7.9, 8.2])
In dieser Fall, ich darf den Schritt nicht zum Stop-Argument hinzufügen.
Aber dann, wenn ich:
7:0.2:8 %In Matlab
7.0000 7.2000 7.4000 7.6000 7.8000 8.0000
kann ich meine erste Idee verwenden:
np.arange(7,8+0.2,0.2)
array([ 7. , 7.2, 7.4, 7.6, 7.8, 8. ])
Mein Problem kommt von der Tatsache, dass ich nicht fest codierte Zeilen wie diese bin zu übersetzen. Tatsächlich können sich die Parameter dieser Bereiche abhängig von den Eingaben der Funktion, an der ich arbeite, ändern. Daher kann ich manchmal 0.2 oder 0.3 als Schrittparameter haben. Also im Grunde wissen Sie, ob es eine andere numpy/scipy oder was auch immer Funktion gibt, die wirklich wie Matlab-Bereich funktioniert, oder wenn ich ein wenig Code selbst hinzufügen muss, um sicherzustellen, dass mein Python-Bereich mit derselben Nummer endet Matlab?
Danke!
Wenn Sie mit 'floats' arbeiten, ist es besser,' numpy.linspace' zu verwenden, an das Sie die endgültige Array-Größe mehr als einen Schritt übergeben. Es vermeidet einige Rundumbelästigungen. –