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
。