存储数据以与Numpy一起使用,具有自动标题

时间:2015-09-29 09:55:38

标签: python arrays numpy

我有一个巨大的数据文件,有这个设计:

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]

是否可以自动为这些数组生成名称?

2 个答案:

答案 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

数组名称是从第一行定义的。