IPython Laden von Variablen in den Arbeitsbereich: Können Sie sich eine bessere Lösung als diese vorstellen?
Ich migriere von MATLAB zu ipython und bevor ich mich auf den Sprung mache, gehe ich meinen minimalen Arbeitsablauf durch, um sicherzustellen, dass jede Operation, die ich täglich mit MATLAB für die Datenverarbeitung durchführe, auf ipython verfügbar ist.
Ich bin gerade mit der grundlegenden Aufgabe beschäftigt, numpy Arrays über einen einzeiligen Befehl zu speichern und zu laden, z. B. über MATLABs:
>>> save('myresults.mat','a','b','c')
>>> load('myresults.mat')
Das Besondere an MATLABs Ladebefehl ist, dass er nicht nur die Datendatei liest, sondern auch die Variablen in den Arbeitsbereich lädt. Es ist nichts anderes erforderlich, um mit ihnen zu arbeiten. Beachten Sie, dass dies beispielsweise bei numpy.load () nicht der Fall ist, da eine andere Zeile erforderlich ist, um die geladenen Werte den Arbeitsbereichsvariablen zuweisen zu können. [ Sehen:IPython: Wie lade ich automatisch eine npz-Datei und weise Variablen Werte zu? ]
Basierend auf den Antworten und Kommentaren zu dieser Frage, kam ich auf diese schmutzig-schlechte-technische-hässliche-Codierungs-aber-funktionierende Lösung. Ich weiß, dass es nicht schön ist, und ich würde gerne wissen, ob Sie die richtige Version von diesem [1] finden können.
Ich stelle dies in iocustom.py
def load(filename):
ip = get_ipython()
ip.ex("import numpy as np")
ip.ex("locals().update(np.load('" + filename + "'))")
so dass ich aus der ipython-sitzung ausführen kann:
import iocustom
load('myresults.npz')
und die Variablen werden in den Arbeitsbereich verschoben.
Ich finde es schwer zu glauben, dass es nichts Vergleichbares gibt, und es ist noch schwerer zu glauben, dass diese 3-Zeilen-Funktion die optimale Lösung ist. Ich wäre Ihnen sehr dankbar, wenn Sie mir eine korrektere Vorgehensweise vorschlagen könnten.
Bitte bedenken Sie, dass:
Ich suche nach einer Lösung, die auch innerhalb eines Skripts und einer Funktion funktioniert.Ich weiß, dass es "pickle" gibt, aber ich lehne es ab, mehr als eine Codezeile für etwas so Alltägliches wie einen einfachen Befehl zum Speichern und / oder Laden zu verwenden.Ich weiß, dass "savemat" und "loadmat" von scipy verfügbar sind, aber ich möchte vollständig migrieren, d. H. Nicht mit mat-Dateien, sondern mit numpy-Arrays arbeiten.ielen Dank im Voraus für all Ihre Hilf
[1] Übrigens: Wie können Leute, die mit ipython arbeiten, auf einfache Weise eine Reihe von Numpy-Arrays speichern und laden? Nach stundenlangem googeln kann ich scheinbar keine einfache und unkomplizierte lösung für diese tägliche aufgabe finden.