【发布时间】:2020-04-02 14:43:22
【问题描述】:
我遇到了一个我认为微不足道的问题。
我有一本包含 2 个条目(模拟)的字典。每个条目是另一个包含 2 个条目(选项)的字典。每个选项都是一个 numpy 数组。
在第一步中,我创建了这些数组,以便每次模拟时它们的形状相同。在下一步中,我只想更改一个值(在示例中:Sim 1、Option_1、数组元素[0,0])。
simulations = {"Sim 1" : "Sim a",
"Sim 2" : "Sim b"}
zero_trips = {"Option_1" : np.zeros((2, 2)),
"Option_2" : np.zeros((2, 2))}
sim_trips = {}
for sim in simulations:
sim_trips[sim] = zero_trips
print(sim_trips)
sim_trips["Sim 1"]["Option_1"][0,0] += 1
print(sim_trips)
但由于某种原因,Option_1 数组在每次模拟时都会更改,而不仅仅是模拟 1。
# 1st output
{'Sim 1': {'Option_1': array([[0., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])},
'Sim 2': {'Option_1': array([[0., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])}}
# 2nd output
{'Sim 1': {'Option_1': array([[1., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])},
'Sim 2': {'Option_1': array([[1., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])}}
我做错了什么?有人可以帮忙吗?
我想要的输出如下所示:
{'Sim 1': {'Option_1': array([[1., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])},
'Sim 2': {'Option_1': array([[0., 0.], [0., 0.]]),
'Option_2': array([[0., 0.], [0., 0.]])}}
【问题讨论】:
标签: python python-3.x numpy dictionary numpy-ndarray