将两个2D numpy数组合并为一个2D元组数组

11 投票
2 回答
6739 浏览
提问于 2025-04-16 11:04

我有两个二维的numpy数组,它们表示三个点之间的x/y距离。我想把这些x/y距离以元组的形式放在一个单独的数组里。

比如从:

x_dists = array([[ 0, -1, -2],
                 [ 1,  0, -1],
                 [ 2,  1,  0]])

y_dists = array([[ 0, -1, -2],
                 [ 1,  0, -1],
                 [ 2,  1,  0]])

我需要:

dists = array([[[ 0,  0], [-1, -1], [-2, -2]],
               [[ 1,  1], [ 0,  0], [-1, -1]],
               [[ 2,  2], [ 1,  1], [ 0,  0]]])

我尝试过用不同的方法,比如dstack、hstack、vstack和concatenate,但都没有达到我想要的效果。实际上,代码中的数组可能会非常大,所以在Python中逐个遍历元素并手动调整位置并不是一个快速的选择。

编辑:这是我最后想到的解决方案: https://gist.github.com/807656

2 个回答

8

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者数据不完整。这就像是水桶里有个洞,水会漏掉,导致我们不能得到想要的结果。

为了避免这些问题,我们可以使用一些工具和方法来确保数据的质量。比如,我们可以在获取数据之前先检查一下,确保它是完整的,格式也是正确的。这样就能减少出错的机会。

总之,处理数据就像是管理水桶里的水,我们需要小心翼翼,确保水不会漏掉,才能顺利地完成我们的任务。

numpy.rec.fromarrays([x_dists, y_dists], names='x,y')
13
import numpy as np
dists = np.vstack(([x_dists.T], [y_dists.T])).T

这个代码会返回你想要的 dists。不过,结果不是“一个包含二元组的二维数组”,而是一个普通的三维数组,其中第三个维度是将两个原始数组连接在一起的结果。

你可以看到:

dists.shape # (3, 3, 2)

撰写回答