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

在Python中创建可变数量的列表,python,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

我想从.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]也是一个矩阵


有更好/更智能的解决方案吗?

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

现在,您可以使用访问列向量

x1 = x[:,0]
x2 = x[:,1]
并对这些变量使用numpy函数

y = x1.dot(x2)

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

现在,您可以使用访问列向量

x1 = x[:,0]
x2 = x[:,1]
并对这些变量使用numpy函数

y = x1.dot(x2)

为什么不使用一个名为x的列表呢

x[1].T
x[2] - Y
x_1
x_2
等相比,只需多击一次键。如果您不想使用
x[0]
,只需在那里输入一个
None


动态生成本地或全局变量是个坏主意。

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

x[1].T
x[2] - Y
x_1
x_2
等相比,只需多击一次键。如果您不想使用
x[0]
,只需在那里输入一个
None


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

您可以使用
locals()
方法。对于较小的脚本和应用程序来说,这没什么问题,但在我看来,它很快就会变得难以控制。仅使用二维列表有什么问题吗?所以您可以使用
x=numpy.loadtxt(…)
然后
x[0].T
x[1]-Y
?您可以使用
locals()
方法。对于较小的脚本和应用程序来说,这是可以的,但在我看来,它很快就会变得难以控制。仅使用二维列表有什么问题吗?因此,您可以执行
x=numpy.loadtxt(…)
然后执行
x[0].T
x[1]-Y
?@Lauritz:是的,这正是我在更新中提到的,谢谢你的快速回复@Lauritz:是的,这正是我在更新中提到的,谢谢你的快速回复