我有两个具有相同键的字典。每个项目都是一个ndarray。
from numpy import zeros, random
from collections import namedtuple
PhaseAmplitude = namedtuple('PhaseAmplitude','phase amplitude')
dict_keys = {'K1','K2', 'K3'}
J1 = dict.fromkeys(dict_keys, zeros((2,2,2,2)))
U1 = dict.fromkeys(dict_keys, PhaseAmplitude(phase = zeros((2,2)),
amplitude = zeros((2,2))))
for iFld in dict_keys:
U1[iFld] = U1[iFld]._replace(phase = random.random_sample((2,2)),
amplitude = random.random_sample((2,2)))
我想使用第二个字典中的相应项目修改第一个字典中的每个项目:
for iFld in dict_keys:
J1[iFld][0,0,:,:] += U1[iFld].phase
J1[iFld][0,1,:,:] += U1[iFld].amplitude
我希望得到它J1[iFld][0,0,:,:] = U1[iFld].phase
,J1[iFld][0,1,:,:] = U1[iFld].amplitude
但我得到J1[iFld]
的是对所有人都是一样的,iFld
并且等于所有iFld
键的总和U1
(当然要跟踪phase
和amplitude
字段U1
)。
对我来说,这看起来像是一个错误,但我只使用 Python 一个月左右(从 matlab 切换)所以我不确定。
问题:这是预期的行为还是错误?为了获得我想要的行为,我应该在我的代码中进行哪些更改?
注意:我选择了的维数dict_keys
和以反映我的特殊情况。J1
U1