【问题标题】:how to save output-file with variable name passed to a function?如何使用传递给函数的变量名保存输出文件?
【发布时间】:2017-09-25 19:49:29
【问题描述】:

我需要将函数的输出保存到一个文件中,其中包含传递给该函数的变量名称。 我尝试使用来自 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”后缀而不是“set1”保存。请提出正确的做法。

【问题讨论】:

    标签: python variable-names


    【解决方案1】:

    没有合适的方法来做到这一点。 distPlot() 参数只是一个名称,将分配给作为其第一个参数给出的 value ,它可能根本不是变量 - 例如它可能是文字字符串“foobar”或任何返回的函数调用,用作调用中的参数。由于您大概知道参数的名称是什么,假设它有一个,只需将其作为 dist 参数显式传递。

    【讨论】:

    • 我想要一个函数,因为我想传递多个数据集,所以手动输入不是一个好的选择。
    • 在您在代码中调用 Plot() 的地方,您知道传递给它的变量的名称,因此您似乎也可以保存函数的输出到具有该名称的文件。如果有不止一个,请将它们保存在list
    • 简单来说,修改Plot(),使其接受一个值一个变量名——即Plot(dist, varname, sav=False):——然后将其命名为 Plot(set1, 'set1')Plot(set2, 'set2')Plot(10, 'no name') 等。
    【解决方案2】:

    您的函数 var_name 将返回变量中的 dict 名称,而不是 numpy 数组。你的数据集分布是什么结构? 尝试将函数定义 var_name(**variables) 更改为 var_name(*variables)(单个星号)。然后将函数调用改为 var_name(dist)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2011-04-16
      • 2010-09-09
      • 2011-02-14
      相关资源
      最近更新 更多