2016-12-27 24 views
4

我無法弄清楚如何存儲細胞魔法的結果 - %%timeit?我讀過:如何存儲來自%% timeit cell magic的結果?

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

,並在這個問題只有系魔法的答案。在在線模式(%)這個工程:

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

但在電池模式(%%

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

它只是執行單元,沒有魔法。這是一個錯誤還是我做錯了什麼?

+0

我正在使用IPython 5.1.0 – godaygo

+1

感謝您不僅參考相關的問題,而且總結它們是如何相關的。當有問題時,你會驚訝(或不是)有多少人沒有這種內在反射。 –

回答

5

您可以%%timeit -o細胞後使用_變量(最後結果店),並將其分配給一些可重複使用的變量:

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> 

我不認爲這是一個錯誤,因爲電池模式下的命令必須是該單元格中的第一個命令,因此您不能在該命令之前放置任何內容(甚至不包括res = ...)。

但是,您仍然需要-o,否則_變量將包含None

+0

而'res'有很多屬性,你可以用'res來看。 '或'vars(res)'。 – hpaulj