使用数组变量Python

时间:2019-01-29 10:46:26

标签: python python-3.x numpy

我愿意使用与变量相同的名称保存文件。请参见以下代码:

training = np.arange(200)
np.savetxt(training.txt,training)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'txt'

当我使用双引号时,它将很明显地起作用:

np.savetxt("training.txt",training)

但是在我的程序中有不同的变量,我希望当我调用文件保存函数时,文件名应自动作为变量名本身。
例如,如果变量是questionanswer,那么当我说save()时,文件名应自动为question.txtanswer.txt
建议我该怎么做。

3 个答案:

答案 0 :(得分:3)

这没有什么好的方法。 Python中的变量只是对实际对象的引用。名字没关系。

您需要一种使用给定名称存储变量的方法,这就是关联表的含义,而这就是Python中的dict

这类似于:

variables={}
variables["training"] = np.arange(200)
for key, val in variables.items():
    np.savetxt(key, value)

答案 1 :(得分:1)

在Python中使用标识符名称很麻烦(并且不打算将其作为惯例)。您为什么不尝试使用字典?

import np

my_dict = dict()

def save(name: str):
    np.savetext('{}.txt'.format(name), my_dict[name])

my_dict['training'] = np.arange(200)
save('training')

答案 2 :(得分:0)

一种非常骇人听闻的方法是从本地符号表中获取变量名称。如果您知道只有一个数组,则可以简单地得到第一个结果。

>>> 
>>> import numpy as np
>>> training = np.arange(200)
>>> def getndarrayname(env):
...     return list(filter(lambda x: isinstance(env[x], np.ndarray), env.keys()))
... 
>>> getndarrayname(locals())
['training']
>>>