dou*_*oug 2 python numpy python-2.7
我numpy.loadtxt用来从文本文件中提取大量数据,然后使用循环将不同的列放入不同的字典键,如下所示:
f = numpy.loadtxt(datafile, skiprows=5) # Open and read in the file, skipping to the data
d = {} # Create empty dictionary
for x in range(0, f.shape[1]):
d[x] = f[:,x] # Loop through the columns of the datafile, putting each one into
#a dictionary index
Run Code Online (Sandbox Code Playgroud)
文本文件中数组上方的行包含数组中变量的所有标题,有没有办法获取每个变量名称并将其作为相关字典的键名?(即第一栏=数据,d [日期] = {14/11/12,15/11/12 ......等)
熊猫是一个好主意,所以对reptilicus的回答"竖起大拇指".
如果您不希望依赖Pandas,您可以轻松地使用该函数numpy.genfromtxt将数据直接读取到numpy结构化数组中.结构数组就像一个numpy 1-d数组和一个字典.
例如,这是一个示例数据文件"data.csv":
alpha, beta, gamma
100, 0.5, 19.9
210, 0.25, 21.0
240, 0.45, 15.0
290, 0.75, 5.5
Run Code Online (Sandbox Code Playgroud)
您可以将其读入结构化数组,如下所示:
>>> data = genfromtxt('data.csv', delimiter=',', names=True, dtype=None)
Run Code Online (Sandbox Code Playgroud)
该选项names=True告诉genfromtxt您使用列标题作为结构化数组中的字段名称.设置dtype=None告诉genfromtxt自动确定列的数据类型(默认是将所有值转换为双精度浮点值).
data 看起来像这样.
>>> data
array([(100, 0.5, 19.9), (210, 0.25, 21.0), (240, 0.45, 15.0),
(290, 0.75, 5.5)],
dtype=[('alpha', '<i4'), ('beta', '<f8'), ('gamma', '<f8')])
Run Code Online (Sandbox Code Playgroud)
您可以访问单个元素(每个元素都包含三个字段):
>>> data[0]
(100, 0.5, 19.9)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用类似字典的界面访问列:
>>> data['beta']
array([ 0.5 , 0.25, 0.45, 0.75])
Run Code Online (Sandbox Code Playgroud)
你可以结合这些:
>>> data['beta'][1]
0.25
>>> data[1]['beta']
0.25
Run Code Online (Sandbox Code Playgroud)