将网格网格的功能分解回坐标数组(numpy)

时间:2019-02-20 19:08:51

标签: python numpy

问题:

我有两个一维数组

import numpy as np 

x = np.arange(5, 9)
# array([5, 6, 7, 8])

y = np.arange(3) 
# array([0, 1, 2])

和具有前两个笛卡尔积的形状的另一个2D数组(如它们的网格):

z = np.arange(x.size*y.size).reshape(x.size, y.size)

# array([[ 0,  1,  2],
#        [ 3,  4,  5],
#        [ 6,  7,  8],
#        [ 9, 10, 11]])

我想使用纯numpy形成以下数组:

coords = []
for i in range(x.size):
    for j in range(y.size):
        c = [x[i], y[j], z[i,j]]
        coords.append(c)
del i, j, c
coords = np.array(coords)

# array([[ 5,  0,  0],
#        [ 5,  1,  1],
#        [ 5,  2,  2],
#        [ 6,  0,  3],
#        [ 6,  1,  4],
#        [ 6,  2,  5],
#        [ 7,  0,  6],
#        [ 7,  1,  7],
#        [ 7,  2,  8],
#        [ 8,  0,  9],
#        [ 8,  1, 10],
#        [ 8,  2, 11]])

背景

一个人可能会认为

x1, y1 = np.meshgrid(x, y)
z = f(x1, y1)
del x1, x2 

其中f是一些功能。然后,我想构造数组

coords = [[x[1], y[1], z[1,1]], [x[2], y[1], z[2,1]], ...] 

任何指导表示赞赏。谢谢!

0 个答案:

没有答案