2016-05-05 7 views
1

Ich möchte eine Sammlung aller numpy Arrays, die derzeit von meinem Python-Interpreter verwaltet werden. Frühere Antworten deuten darauf hin, dass gc.get_objects() dies für mich tun sollte. Allerdings habe ich nicht die erwarteten Ergebnisse erhalten:Listet alle bekannten NumPy-Arrays im Python-Interpreter auf

In [1]: import numpy as np 

In [2]: import gc 

In [3]: x = np.ones(5) 

In [4]: any(item is x for item in gc.get_objects()) 
Out[4]: False 

Gibt es eine Möglichkeit alle bekannten NumPy Arrays (oder Objekte jeglicher Art wirklich) zu bekommen zur Zeit instanziiert?

+0

könnten Sie ein bisschen auf erarbeiten, was Sie versuchen letztlich zu erreichen? –

Antwort

1

Ich bin mir nicht sicher, ob dies genau das Problem löst, das Sie zu lösen versuchen, aber was ist mit locals()? Das fängt an, zumindest zu bekommen, was vars vom Interpreter Ihrer aktuellen interaktiven Sitzung verfolgt werden? Diese

import numpy as np 
a = np.array([1, 2, 3]) 
b = np.array([2, 3, 4]) 
filter(lambda x : isinstance(x, np.ndarray), locals().values()) 
+0

Ich glaube, dass Locals nur lokalen Bereich bietet, nicht Variablen an anderer Stelle zugewiesen. – MRocklin

2

ist keine perfekte Antwort, aber nach this stackoverflow post können Sie locals() verwenden, um ein Wörterbuch aller lokal deklarierten Variablen zu erhalten.

Sie können dann alle bekannten NumPy Arrays erhalten mit einfachen dict Verständnis:

import numpy as np 
np_arrays = {k:v for k,v in locals().items() if isinstance(v, np.ndarray)} 

Sie dann über das Wörterbuch laufen kann aber Sie danach mögen.

+1

Ich glaube, dass Locals nur lokalen Geltungsbereich bietet, nicht Variablen anderswo zugewiesen. – MRocklin