我有一个巨大的数据文件,有这个设计:
A B C D
2 3 1 2
3 1 3 6
1 5 4 1
我想将它存储在numpy数组中,因为我需要用它们进行大量的计算。所以我想要这样的数组,其中数组的名称是自动创建的:
A=[2,3,1]
B=[3,1,5]
C=[1,3,4]
D=[2,6,1]
是否可以自动为这些数组生成名称?
答案 0 :(得分:2)
您可以使用genfromtxt
创建numpy
结构化数组,其中每列的名称取自输入的第一行,并将names
设置为True
import io
import numpy as np
t=u"""A B C D
2 3 1 2
3 1 3 6
1 5 4 1"""
data = np.genfromtxt(io.StringIO(t),names=True)
print data['A']
# [ 2., 3., 1.]
print data['B']
# [ 3., 1., 5.]
答案 1 :(得分:0)
这是有效的,但我在python中没有写那么多,以确保它是pythonic的方式:)
with open('test.txt') as f:
content = f.readlines()
names = content[0].split()
for name in names:
exec("%s = []"%(name))
for line in content[1:]:
arr = map(int,line.split())
i = 0
for name in names:
exec("%s.append(%d)"%(name,arr[i]))
i+=1
数组名称是从第一行定义的。