这是一种生活质量查询,我觉得有答案,但无法找到(也许我使用错误的条款)
基本上,我有多组大数据文件,我想对其进行分析。这涉及读取每个数据文件并将它们存储为一个数组(可变长度)。
到目前为止,我一直在做
import numpy as np
input1 = np.genfromtxt('data1.dat')
input2 = np.genfromtxt('data2.dat')
等。我想知道是否有一种方法可以为每个数据集动态分配一个数组。由于您可以使用for循环动态读取这些内容,
for i in xrange(2):
input = np.genfromtxt('data%i.dat'%i)
我希望结合上面的内容来创建一堆数组; input1,input2等,没有我多次输入genfromtxt。当然,如果我要导入100个数据集(恰当地命名为data0,data1等),那么有一种方法。
我能想到的解决方案可能是创建一个函数,
import numpy as np
def input(a):
return np.genfromtxt('data%i.dat'%a)
但显然,我更愿意将其存储在内存中而不是不断重新生成列表,并且非常感谢知道这是否可以在Python中使用。
答案 0 :(得分:4)
您可以选择将数组存储在dict
或list
中:
选项1
使用dict
。
data = {}
for i in xrange(2):
data['input{}'.format(i)] = np.genfromtxt('data{}.dat'.format(i))
您可以按键访问每个阵列。
选项2
使用list
。
data = []
for i in xrange(2):
data.append(np.genfromtxt('data{}.dat'.format(i)))
或者,使用列表理解:
data = [np.genfromtxt('data{}.dat'.format(i)) for i in xrange(2)]
您还可以使用map
,它会返回一个列表:
data = map(lambda x: np.genfromtxt('data{}.dat'.format(x)), xrange(2))
现在您可以按索引访问每个数组。