numpy 替换dict中数组的特定行

cyvaqqii  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(91)

我想替换存储在字典中的数组的第 n 行。字典的数组是用特定的“形状”创建的。在下面的例子中,dict有键[10, 20, 30, 40],每个键对应一个5x 2数组;当尝试用[2,-4]列表替换key=20标识的数组的第2行时,下面的代码替换dict中所有数组的第2行。如何让它只替换key=20的数组?

import itertools
import numpy as np
my_dict = dict(zip([10, 20, 30, 40], itertools.repeat(np.zeros((5, 2)))))
my_dict[20][1] = [ 2, -4]
print(my_dict)

字符串

wmtdaxz3

wmtdaxz31#

以下是许多可能的解决方案之一:

import itertools
import numpy as np

my_dict = {key: np.zeros((5, 2)) for key in [10, 20, 30, 40]}
my_dict[20][1] = [ 2, -4]
print(my_dict)

字符串
你的问题是itertools.repeat的结果4次引用内存中的同一个对象,因此修改会反映在所有dict的值中。
相反,{key: np.zeros((5, 2)) ...}为每个dict条目初始化一个新的零数组。

相关问题