【发布时间】:2016-12-10 19:28:45
【问题描述】:
我是第一次使用 python 字典的学生,我一直坚持将它们用于矩阵数组。
我有一个按周描述温度和湿度的嵌套有序字典。
weather = OrderedDict([(92, OrderedDict([('Mon', 79), ('Tues', 85),
('Weds', 87), ('Thurs', 83)])),
(96, OrderedDict([('Mon', 65), ('Tues', 71),
('Weds', 74), ('Thurs', 68)])),
(91, OrderedDict([('Mon', 83), ('Tues', 84),
('Weds', 82), ('Thurs', 80)]))])
每周的整体键表示平均湿度,每天的单独值表示温度。
我正在尝试在 matplotlib 中创建一个温度与天数线的单一图形图,它将使用湿度作为第三个变量来指示颜色条的颜色。似乎LineCollection 将使用包含日期和温度的二维数组来执行此操作。但是当我尝试从嵌套字典中拉出二维数组时,我似乎无法将它变成LineCollection 所需的 Nx2 形状。
非常感谢任何帮助!
这是我目前的代码:
plt.figure()
x=[]
y=[]
z=[]
ticks=[]
for humidity, data_dict in weather.iteritems():
x.append(range(len(data_dict)))
y.append(data_dict.values())
z.append(humidity)
ticks.append(data_dict.keys())
for ii in x,y,z:
ii = np.array(ii)
lines=np.array(zip(x,y))
print lines.shape
这会返回形状是 (3, 2, 4) 而不是 (3, 2)
编辑: 我希望输出中的行看起来像这样,因此 numpy 可以将其识别为 3x2 2D 数组:
[[(0 1 2 3), (79 85 87 83)],
[(0 1 2 3), (65 71 74 68)],
[(0 1 2 3), (83 84 82 80)]]
【问题讨论】:
-
你想要的可变行输出是什么?
-
@Prasanna,我在问题中添加了我想要的输出。
标签: python arrays dictionary multidimensional-array matplotlib