Jam*_*esS 9 python arrays dictionary data-structures
我是Python新手,对于在我的代码中存储数据的"最佳"方式可能是一个非常基本的问题.任何建议非常感谢!
我有一个很长的.csv文件,格式如下:
Scenario,Year,Month,Value
1,1961,1,0.5
1,1961,2,0.7
1,1961,3,0.2
etc.
Run Code Online (Sandbox Code Playgroud)
我的场景值从1到100,年份从1961年到1990年,月份从1到12.因此,我的文件有100*29*12 = 34800行,每行都有一个关联值.
我想把这个文件读成某种Python数据结构,这样我就可以通过指定'Scenario','Year'和'Month'来访问'Value'.请问最好的方法是什么(或者有哪些选择)?
在我的脑海中,我认为这些数据是一种带有轴,用于场景,年和月的"数字长方体",因此每个值都位于坐标(场景,年,月).出于这个原因,我很想尝试将这些值读入3D numpy数组,并使用Scenario,Year和Month作为索引.这是明智的做法吗?
我想我也可以创建一个字典,其中键是类似的
str(Scenario)+str(Year)+str(Month)
Run Code Online (Sandbox Code Playgroud)
这会更好吗?还有其他选择吗?
(通过'更好',我想我的意思是'访问速度更快',尽管如果一种方法比另一种方法的内存密集程度要低得多,那么也很了解它.
非常感谢!
我会使用元组词典.简单,快速,并且哈希表查找以检索单个值:
import csv
reader = csv.reader(open('data.csv', 'rb'))
header = reader.next()
data = {}
for row in reader:
key = tuple([int(v) for v in row[:-1]])
val = row[-1]
data[key] = float(val)
# Retrieve a value
print data[1, 1961, 3]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |