numpy 3D阵列形状

时间:2018-03-05 22:41:03

标签: python arrays numpy matrix

我创建了一个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)

非常感谢

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

x[:, :, 0]

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