Python 如何通过计算欧几里得度量将三个一维数组转换为一个三维数组

Python 如何通过计算欧几里得度量将三个一维数组转换为一个三维数组,python,arrays,numpy,Python,Arrays,Numpy,我有三个阵列: x_array = [1., 2., 3.] y_array = [1., 2., 3.] z_array = [1., 2., 3.] 这3个阵列定义了三维阵列的轴。我想计算欧几里得度量,就像 array3D = np.array((3, 3, 3)) for ix in range(0, 3): for iy in range(0, 3): for iz in range(0, 3): dist = np.sqrt(x_arr

我有三个阵列:

x_array = [1., 2., 3.]
y_array = [1., 2., 3.]
z_array = [1., 2., 3.]
这3个阵列定义了三维阵列的轴。我想计算欧几里得度量,就像

array3D = np.array((3, 3, 3))
for ix in range(0, 3):
    for iy in range(0, 3):
        for iz in range(0, 3):
            dist = np.sqrt(x_array[ix]**2 + y_array[iy]**2 + z_array[iz]**2)
            array3D[ix][iy][iz] = dist
有比三个
循环更快的方法吗?

尝试广播:

a = np.sqrt(np.array(x_array)[:,None,None]**2 
            + np.array(y_array)[None,:,None]**2
            + np.array(z_array)**2
           )

为完整起见,您可以使用
np.add.outer

np.sqrt(np.add.outer(np.add.outer(x**2, y**2), z**2))

“einsum看起来很有趣,但不确定如何使欧几里得度量标准起作用?”卡尔。说得好。我太专注于获得正确的尺寸了,我忘记了你的实际问题:)将立即修复。你不需要
y\u数组的前导
None