Я студент, впервые работающий с словарями python, и я зацикливаюсь на их применении в матричных массивах.Создание 2D-массива из вложенных словарей
У меня есть вложенный упорядоченный словарь, описывающий температуру и влажность неделю за неделей.
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
сделает это с помощью 2D-массива дня и температуры. Но когда я пытаюсь вытащить 2D-массив из вложенного словаря, я не могу представить его в нужной форме Nx2 для LineCollection
.
Любая помощь очень ценится!
Вот код, который я до сих пор:
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)
EDIT: Я надеясь на линию в выходе, который выглядит, как это, так 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
@Прасанна, я добавил свой желаемый результат на вопрос. – morepenguins