在Python中创建可变数量的列表

时间:2013-08-02 07:51:56

标签: python

我想从.txt文件中读取数据,并将每列作为变量输入(比如x_1,x_2等) 通常我用

x_1, x_2, x_3 = numpy.loadtxt('filename.txt', delimiter=',' , unpack = True)

现在的问题是每个数据文件的列数都不同。所以我一直在寻找一种方法来创建多个变量名称x_i

我尝试使用字典将每个键作为空列表以下列方式使用:

features = dict(('x_%d' %i,[]) for i in range (1,n))   # n is specified by user

问题是我想将这些列表(x_1,x_2等)转换为矩阵并稍后执行一些矩阵运算。我只是不能将这些键作为变量引用,如:

x_1.T                        # Transpose  OR
x_2 - Y                      # both x_2 and Y are matrices

我不想每次都使用像['x_3']这样的功能。有什么建议吗?

更新:好的找到了一种方法:创建一个矩阵列表,然后将它们称为x [o],x [1]等。即使x是一个列表,x [ 2]是一个矩阵。

任何更好/更智能的解决方案?

2 个答案:

答案 0 :(得分:1)

首先将文件加载到一个大数组(矩阵)中:

x = numpy.loadtxt('filename.txt', delimiter=',', unpack=True)

现在您可以使用

访问列向量
x1 = x[:,0]
x2 = x[:,1]

并对这些变量使用numpy函数

y = x1.dot(x2)

答案 1 :(得分:0)

为什么不使用名为x的列表?

x[1].T
x[2] - Y

x_1x_2等相比,这只是一次额外的击键。如果您不想使用x[0],只需在其中添加None

动态生成局部或全局变量是一个坏主意。