在Python中创建可变数量的列表
我想从.txt文件中读取数据,并将每一列作为变量输入(比如x_1、x_2等) 通常我用在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
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:是的,这正是我在更新中提到的,谢谢你的快速回复