2017-09-25 12 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)を使用する場合は、ファイルではなく、 "SET1" の "DIST" 接尾辞で保存されます。適切なやり方を提案してください。

答えて

0

適切な方法はありません。 distのパラメータがPlot()の場合、最初の引数として与えられたに割り当てられる名前です。これは変数ではない可能性があります。たとえば、リテラル文字列 "foobar"または関数呼び出し戻り値は呼び出しの引数として使用されました。おそらくあなたは議論の名前が何であるかを知っているので、それがあると仮定すると、distパラメータとして明示的に渡すだけです。

+0

私は複数のデータセットを渡したいので、私は関数を必要としていたので、手動入力は良い選択肢ではありません。 – Yash

+0

あなたのコードで 'Plot()'と呼ばれる場所で、渡される変数の名前を知っているので、関数の出力を次のように保存することもできます。その名前のファイルどういうわけか複数ある場合は、それらを 'list'に保存してください。 – martineau

+0

簡単に言えば、 'Plot()'を変更して、変数名と変数名をとります。 Plot(set、set1 ') '' Plot(set2、' set2 ') '' Plot(10、' no name ')のように呼び出すと、 'など – martineau

0

関数var_nameは、numpy配列ではなく、変数のdictの名前を返します。あなたのデータセットdistはどのような構造ですか? 関数定義var_name(** variables)をvar_name(* variables)(単一のアスタリスク)に変更してみてください。次に、関数呼び出しをvar_name(dist)に変更します。

関連する問題