numpy 为什么meshgrid比input多一个维度?

nukf8bse  于 2023-05-13  发布在  其他
关注(0)|答案(1)|浏览(150)

我很难理解为什么np.meshgrid产生的数组的形状比输入的形状要大:

grid = np.meshgrid(
    np.linspace(-1, 1, 5),
    np.linspace(-1, 1, 4),
    np.linspace(-1, 1, 3), indexing='ij')

np.shape(grid)

(三、五、四、三)
对我来说应该是:(5、4、3)

grid = np.meshgrid(
    np.linspace(-1, 1, 5),
    np.linspace(-1, 1, 4), indexing='ij')

np.shape(grid)

(2、5、4)
对我来说应该是:(5,4)为什么不是呢?

2lpgd968

2lpgd9681#

In [92]: grid = np.meshgrid(
    ...:     np.linspace(-1, 1, 5),
    ...:     np.linspace(-1, 1, 4), indexing='ij')
    ...: 
In [93]: grid
Out[93]: 
[array([[-1. , -1. , -1. , -1. ],
        [-0.5, -0.5, -0.5, -0.5],
        [ 0. ,  0. ,  0. ,  0. ],
        [ 0.5,  0.5,  0.5,  0.5],
        [ 1. ,  1. ,  1. ,  1. ]]),
 array([[-1.        , -0.33333333,  0.33333333,  1.        ],
        [-1.        , -0.33333333,  0.33333333,  1.        ],
        [-1.        , -0.33333333,  0.33333333,  1.        ],
        [-1.        , -0.33333333,  0.33333333,  1.        ],
        [-1.        , -0.33333333,  0.33333333,  1.        ]])]

grid是一个包含两个数组的列表。第一个数组的数字来自第一个参数(有5个元素的那个)。第二个是第二个参数中的数字。
为什么np.shape(grid)是(5,4)?你想要什么样的布局?
np.shape(grid)实际上是np.array(grid).shape,这就是为什么有一个额外的维度。

相关问题