有人可以给我解释一下这段代码的第二行吗?

objp = np.zeros((48,3), np.float32)
objp[:,:2] = np.mgrid[0:8,0:6].T.reshape(-1,2)

有人可以向我解释代码的np.mgrid [0:8,0:6]部分到底在做什么,而代码的T.reshape(-1,2)部分到底在做什么?

谢谢,干得好!

最佳答案

第二行创建一个multi-dimensional mesh gridtransposesreshapes,以便表示两列并将其插入到objp数组的前两列中。

细目:

np.mgrid [0:8,0:6]创建以下mgrid:

>> np.mgrid[0:8,0:6]
array([[[0, 0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3, 3],
        [4, 4, 4, 4, 4, 4],
        [5, 5, 5, 5, 5, 5],
        [6, 6, 6, 6, 6, 6],
        [7, 7, 7, 7, 7, 7]],

       [[0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5],
        [0, 1, 2, 3, 4, 5]]])

.T转置矩阵,然后.reshape(-1,2)将其重整为两个两列的数组形状。然后这两列是正确的形状,可以替换原始数组中的两列。

10-07 23:41