2016-12-27 2 views
4

Ich kann nicht herausfinden, wie man das Ergebnis von Zellmagie speichert - %%timeit? Ich habe gelesen:Wie speichern Sie das Ergebnis aus %% Zeitit Cell Magic?

  1. Can you capture the output of ipython's magic methods?
  2. Capture the result of an IPython magic function

und in diesen Fragen Antworten nur über Linie Magie. Im Line-Modus (%) das funktioniert:

In[1]: res = %timeit -o np.linalg.inv(A) 

Aber in Zelle Modus (%%) es nicht:

In[2]: res = %%timeit -o 
     A = np.mat('1 2 3; 7 4 9; 5 6 1') 
     np.linalg.inv(A) 

Es ist einfach die Zelle führt, keine Magie. Ist es ein Fehler oder mache ich etwas falsch?

+0

Ich benutze IPython 5.1.0 – godaygo

+1

Vielen Dank für nicht nur Verweis auf verwandte Fragen, sondern auch zusammenfassend, wie sie relevant sind. Sie würden überrascht sein (oder nicht), wie viele Menschen dies nicht als eingebauten Reflex haben, wenn sie eine Frage haben. –

Antwort

5

können Sie verwenden, um die _ Variable (speichert das letzte Ergebnis) nach der %%timeit -o Zelle und weisen es einige wiederverwendbare Variable:

In[2]: %%timeit -o 
     A = np.mat('1 2 3; 7 4 9; 5 6 1') 
     np.linalg.inv(A) 
Out[2]: blabla 
     <TimeitResult : 1 loop, best of 3: 588 µs per loop> 

In[3]: res = _ 

In[4]: res 
Out[4]: <TimeitResult : 1 loop, best of 3: 588 µs per loop> 

Ich glaube nicht, dass es ein Fehler ist, weil Zellenmodus Befehle muss der erste Befehl in dieser Zelle sein, so dass Sie nichts (nicht einmal res = ...) vor diesen Befehl setzen können.

Sie benötigen jedoch immer noch die -o, denn sonst enthält die _ Variable None.

+0

Und das 'res' hat eine Reihe von Attributen, die Sie mit' res sehen können. 'oder' vars (res) '. – hpaulj

Verwandte Themen