【问题标题】:Replace entry in specific numpy array stored in dictionary替换存储在字典中的特定 numpy 数组中的条目
【发布时间】:2019-10-25 22:45:56
【问题描述】:

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

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

问题是当我尝试如下所示时,字典中每个数组的当前索引处的值都会被替换,而不仅仅是我指定的那个。

对不起,如果示例代码的格式令人困惑,这是我的第一个问题(不太明白如何在 for 循环的下一行中正确缩进 example_dict["key1"][idx] = idx+10 行...)。

>>> import numpy as np 

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

>>> example_dict["key1"]

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

>>> example_dict["key2"]

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

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



>>> example_dict["key1"]

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

>>> example_dict["key2"]

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

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

【问题讨论】:

    标签: python dictionary numpy-ndarray


    【解决方案1】:
    >>> hex(id(example_dict["key1"]))
    '0x26a543ea990'
    >>> hex(id(example_dict["key2"]))
    '0x26a543ea990'
    

    example_dict["key1"]example_dict["key2"] 指向同一个地址。要解决此问题,您可以使用字典推导。

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

    【讨论】:

    • 谢谢,它解决了这个问题。虽然我想知道为什么为这个特定目的(dict.fromkeys())制作的函数会首先引入这个问题......
    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2020-10-12
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2016-02-02
    相关资源
    最近更新 更多