gpt4 book ai didi

python - 使用来自 (x,y,value) 三元组的数据创建 Numpy 二维数组

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:07 27 4
gpt4 key购买 nike

我在(x, y, value)三元组形式的数据库中有很多数据。
我希望能够通过在数组的坐标 (x,y) 处设置 value 来从此数据动态创建 2D numpy 数组。

例如,如果我有:

(0,0,8)
(0,1,5)
(0,2,3)
(1,0,4)
(1,1,0)
(1,2,0)
(2,0,1)
(2,1,2)
(2,2,5)

结果数组应该是:

Array([[8,5,3],[4,0,0],[1,2,5]])

我是 numpy 的新手,numpy 中有什么方法可以这样做吗?如果不是,您建议采用什么方法?

最佳答案

扩展@MaxU 的答案,以防坐标未按网格方式排序(或缺少某些坐标),您可以按如下方式创建数组:

import numpy as np

a = np.array([(0,0,8),(0,1,5),(0,2,3),
(1,0,4),(1,1,0),(1,2,0),
(2,0,1),(2,1,2),(2,2,5)])

这里 a 代表你的坐标。它是一个 (N, 3) 数组,其中 N 是坐标的数量(它不必包含所有坐标)。 a (a[:, 0]) 的第一列包含 Y 位置,而第二列 (a[:, 1])包含 X 位置。同样,最后一列 (a[:, 2]) 包含您的

然后您可以提取目标数组的最大维度:

# Maximum Y and X coordinates
ymax = a[:, 0].max()
xmax = a[:, 1].max()

# Target array
target = np.zeros((ymax+1, xmax+1), a.dtype)

最后,用坐标中的数据填充数组:

target[a[:, 0], a[:, 1]] = a[:, 2]

上面的行在 target 中设置值在 a[:, 0](全是 Y)和 a[:, 1](所有 X) 位置到它们相应的 a[:, 2] 值(您的)。

>>> target
array([[8, 5, 3],
[4, 0, 0],
[1, 2, 5]])

此外,如果您缺少坐标,并且您想用某个数字替换那些缺少的值,您可以将数组初始化为:

default_value = -1
target = np.full((ymax+1, xmax+1), default_value, a.type)

这样,列表中不存在的坐标将在目标数组中用 -1 填充/

关于python - 使用来自 (x,y,value) 三元组的数据创建 Numpy 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409054/

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