我有一个用坐标x、y、z描述的三维曲线网格。x、y和z都是三维numpy数组。为了举例,我们可以说它们都有形状(20,9,10)。所以每个的大小是20*9*10=1800。我需要生成一个3x1800阵列(或1800x3,不管怎样),它存储坐标,如下所示:
[ [x[0,0,0],y[0,0,0],z[0,0,0]],[x[0,0,1],y[0,0,1],z[0,0,1]], ....
[x[19,8,9],y[19,8,9],z[19,8,9]]
我是这样完成的:
coordlist=np.zeros((1800,3))
pt = 0
>>> for k in range(x.shape[0]):
... for j in range(x.shape[1]):
... for i in range(x.shape[2]):
... coordlist[pt]=np.array((x[k,j,i],y[k,j,i],z[k,j,i]))
... pt += 1
这是有效的,但这是我们在这里谈论的愚蠢,所以我认为一定有更好的无循环方法。有人能告诉我那可能是什么吗?
如果您想要1800 x 3:
coordlist = np.column_stack((x.ravel(), y.ravel(), z.ravel()))
否则,使用np.row_stack
获得3 x 1800。