替换字典中存储的特定numpy数组中的条目

时间:2019-06-11 13:31:25

标签: python dictionary numpy-ndarray

我有一个字典,其中包含可变数量的numpy数组(所有长度相同),每个数组都存储在其各自的键中。

对于每个索引,我想用新计算的值替换数组之一中的值。 (这是我实际上正在做的一个非常简单的版本。)

问题在于,当我按如下所示尝试此操作时,将替换字典中每个数组的当前索引处的值,而不仅仅是我指定的那个值。

很抱歉,示例代码的格式令人困惑,这是我的第一个问题(尚未完全了解如何在for循环的下一行中正确显示缩进的行GCMMessage: { IconReference: 'ic_stat_warning', Action: 'OPEN_APP', Title: row.userAssetId+", ID: "+row.title, SilentPush: false, Body: row.body, ImageUrl: 'https://cdn4.iconfinder.com/data/icons/8-bit/160/bit-12-512.png', SmallImageIconUrl: 'https://cdn4.iconfinder.com/data/icons/8-bit/160/bit-12-512.png' } ...)。

example_dict["key1"][idx] = idx+10
  

array([0,1,2,3,4,5,6,7,8,9])

>>> import numpy as np 

>>> example_dict = dict.fromkeys(["key1", "key2"], np.array(range(10)))

>>> example_dict["key1"]
  

array([0,1,2,3,4,5,6,7,8,9])

>>> example_dict["key2"]
  

array([10,11,12,13,14,15,16,17,18,19])

>>> for idx in range(10):
    example_dict["key1"][idx] = idx+10



>>> example_dict["key1"]
  

array([10,11,12,13,14,15,16,17,18,19])

我希望循环仅访问>>> example_dict["key2"] 中的数组,但是不知何故,同样的操作也将应用于存储在example_dict["key1"]中的数组。

1 个答案:

答案 0 :(得分:1)

>>> hex(id(example_dict["key1"]))
'0x26a543ea990'
>>> hex(id(example_dict["key2"]))
'0x26a543ea990'

example_dict["key1"]example_dict["key2"]指向相同的地址。要解决此问题,您可以使用dict理解。

import numpy
keys = ["key1", "key2"]
example_dict = {key: numpy.array(range(10)) for key in keys}