2017-09-25 92 views
0

我需要將函數的輸出保存到傳遞給該函數的變量名稱的文件中。 我已經嘗試從一個stackoverflow用戶使用函數。如何保存傳遞給函數的變量名稱的輸出文件?

def var_name(**variables): 
    return [x for x in variables] 

我的代碼如下,
dist是含有不同陣列numpy的陣列數據集。

MTnum=10 
import matplotlib.pyplot as plt 
import numpy as np 
def Plot(dist, sav=False): 
    MT_dat = np.vsplit(dist,MTnum) 
    for i,mtdat in enumerate(MT_dat): 
     plt.figure(i) 
     for j in range(len(mtdat[0])-1): 
      plt.plot(MT_dat[i][:,0],MT_dat[i][:,j+1]) 
     plt.xlabel('time') 
     plt.ylabel('distance') 
     plt.title('MT_'+str(i+1)+var_name(dist=dist)+'.png') 
     if sav == True: 
      plt.savefig('MT_'+str(i+1)+var_name(dist=dist)+'.png') 
     plt.show() 

如果我使用功能Plot(set1),文件保存爲「DIST」後綴,而不是「集1」。請提出一個正確的方法來做到這一點。

回答

0

有沒有適當的方法來做到這一點。 Plot()dist參數只是一個名字,它將被分配給的值,該名稱作爲其第一個參數給出,它可能根本不是變量 - 例如它可能是字符串「foobar」或任何函數調用返回的那個被用作調用中的參數。既然你大概知道這個參數的名字是什麼,假設它有一個,那麼只需將它作爲dist參數明確傳遞即可。

+0

我想要一個函數,因爲我想傳遞多個數據集,所以手動輸入不是一個好的選擇。 – Yash

+0

在你的代碼中調用'Plot()'的地方,你知道被傳遞給它的變量的名字,所以看起來你也可以將函數的輸出保存到具有該名稱的文件。如果有多於一個,然後將它們保存在一個「列表」中。 – martineau

+0

簡單來說,修改'Plot()',使其具有一個值_and_一個變量名 - 即。 'Plot(dist,varname,sav = False):' - 然後稱之爲'Plot(set1,'set1')'''Plot(set2,'set2')'''Plot(10,'no name') '等等 – martineau

0

您的函數var_name將返回變量中的字典名稱,而不是numpy數組。你的數據集dist是什麼結構? 嘗試將函數定義var_name(**變量)更改爲var_name(*變量)(單個星號)。然後將函數調用更改爲var_name(dist)。

相關問題