将两个2D numpy数组连接成一个2元组的2D数组

Zar*_*nen 8 python arrays numpy

我有两个像这样的2D 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]])
Run Code Online (Sandbox Code Playgroud)

我需要:

dists = array([[[ 0,  0], [-1, -1], [-2, -2]],
               [[ 1,  1], [ 0,  0], [-1, -1]],
               [[ 2,  2], [ 1,  1], [ 0,  0]]])
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用dstack/hstack/vstack/concatenate的各种排列,但它们似乎都没有做我想要的.代码中的实际数组可能是巨大的,因此迭代python中的元素并"手动"进行重新排列不是速度方面的选择.

编辑: 这是我最终提出的:https://gist.github.com/807656

eum*_*iro 10

import numpy as np
dists = np.vstack(([x_dists.T], [y_dists.T])).T
Run Code Online (Sandbox Code Playgroud)

回报dists就像你想要的那样.之后,它不是"单个2元组的二维阵列",而是一个普通的3D阵列,其中第三个轴是两个原始阵列的串联.

你看:

dists.shape # (3, 3, 2)
Run Code Online (Sandbox Code Playgroud)


jfs*_*jfs 7

numpy.rec.fromarrays([x_dists, y_dists], names='x,y')
Run Code Online (Sandbox Code Playgroud)