numpy 3D阵列形状

问题描述 投票:0回答:2

我创建了一个numpy形状的阵列(4,3,2);我希望下面的代码可以打印出一个4 X 3或3 X 4的阵列

import numpy as np

x = np.zeros((4,3,2), np.int32)

print(x[:][:][0])

但是,我得到了

[[0 0]
 [0 0]
 [0 0]]

看起来像2 X 3?我现在对numpy矩阵感到很困惑。我不应该得到

  [[0 0 0]
   [0 0 0]
   [0 0 0]
   [0 0 0]]

而不是?如何将3D图像映射为numpy 3D矩阵?

例如,在MATLAB中,形状(m, n, k)表示在(2D / 3D)图像的上下文中的(row, col, slice)

非常感谢

python arrays numpy matrix
2个回答
1
投票

x[:]沿第一维切割所有元素,因此x[:]给出与x相同的结果,因此x[:][:][0]等同于x[0]

要选择最后一个维度上的元素,您可以执行以下操作:

x[..., 0]
#array([[0, 0, 0],
#       [0, 0, 0],
#       [0, 0, 0],
#       [0, 0, 0]], dtype=int32)

要么:

x[:,:,0]
#array([[0, 0, 0],
#       [0, 0, 0],
#       [0, 0, 0],
#       [0, 0, 0]], dtype=int32)

0
投票

您需要在元组中同时指定所有切片,如下所示:

x[:, :, 0]

如果你做x[:][:][0],你实际上是将第一个维度索引三次。前两个为整个数组创建一个视图,第三个为第一个维度的索引0创建一个视图

© www.soinside.com 2019 - 2024. All rights reserved.