gpt4 book ai didi

python - 将具有坐标和值的字典转换为二维数组

转载 作者:行者123 更新时间:2023-12-01 23:43:12 28 4
gpt4 key购买 nike

假设给定下一个字典:

{(0, 0): 1, (1, 1): 12, (2, 2): 802, (3, 3): 1687, (4, 4): 11, (5, 4): 4, (6, 5): 593, (7, 4): 4}

在上面的字典中,每个键显示矩阵 (x, y) 中的一个点,值显示在矩阵中找到的值。我如何构建一个包含位于每个点 xy 的值的数组?

根据上面的字典预期的结果是:

array([[   1,    0,    0,    0,    0,    0],
[ 0, 12, 0, 0, 0, 0],
[ 0, 0, 802, 0, 0, 0],
[ 0, 0, 0, 1687, 0, 0],
[ 0, 0, 0, 0, 11, 0],
[ 0, 0, 0, 0, 4, 0],
[ 0, 0, 0, 0, 0, 593],
[ 0, 0, 0, 0, 4, 0]])

最佳答案

你可以使用 np.add.at ,预先从键定义数组的形状:

d = {(0, 0): 1, (1, 1): 12, (2, 2): 802, (3, 3): 1687, (4, 4): 11, 
(5, 4): 4, (6, 5): 593, (7, 4): 4}

i,j = zip(*d.keys())
a = np.zeros((max(i)+1,max(j)+1), np.int32)
np.add.at(a, tuple((i,j)), tuple(d.values()))

a
array([[ 1, 0, 0, 0, 0, 0],
[ 0, 12, 0, 0, 0, 0],
[ 0, 0, 802, 0, 0, 0],
[ 0, 0, 0, 1687, 0, 0],
[ 0, 0, 0, 0, 11, 0],
[ 0, 0, 0, 0, 4, 0],
[ 0, 0, 0, 0, 0, 593],
[ 0, 0, 0, 0, 4, 0]])

关于python - 将具有坐标和值的字典转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64710847/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com