动态创建多个数据集的数组

时间:2017-08-21 07:23:52

标签: python

这是一种生活质量查询,我觉得有答案,但无法找到(也许我使用错误的条款)

基本上,我有多组大数据文件,我想对其进行分析。这涉及读取每个数据文件并将它们存储为一个数组(可变长度)。

到目前为止,我一直在做

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中使用。

1 个答案:

答案 0 :(得分:4)

您可以选择将数组存储在dictlist中:

选项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))

现在您可以按索引访问每个数组。