切片3D阵列

时间:2019-10-27 12:14:42

标签: python arrays slice

我想对3D数组进行切片,使其仅打印第二个数组中每行的最后一个元素。

在我的3D阵列中:

np.random.seed(42)
M = np.random.randint(10, size=(2,2,10))
print(M)

我尝试以这种方式访问​​第二个数组的最后一个元素:

print(M[1::2])   ## which just prints me the whole 2nd Array
print(M[1::,2])  ## which gives me an error of index 2 being out of bounds

我了解第一个print()方法,例如:
1:#选择了第二个数组
:#选择了第二个数组的所有行
:2#选择该行的第二个索引并打印

奇怪的是,它打印出使我感到困惑的整个数组。 我希望第二个print()方法至少单独打印第二个索引,但我收到了该错误消息。

所以我尝试了更多,并提出了以下代码:

print(M[1:,0:,::2])

它给了我想要的结果,但是我看不懂代码。 我了解
1:##选择第二个数组
但是,0:,:: 2使我感到困惑。 :: 2正在选择每个第二个索引,但是我仍然不清楚何时可以使用':'。或“,”在切片过程中是什么意思。

1 个答案:

答案 0 :(得分:0)

在numpy中,运算符的工作方式如下:-[start_index:end_index:step]

这意味着当您索引M [1:,0:,:: 2]时,实际上要索引的是从第一个维度的第一个索引([1:])开始的所有内容,然后是从索引的开始的所有内容。第二维({{1)},最后每个元素的步长为2([0:])。

[::2]用于分隔维度,因此我假设您实际要做的是,以获取每个第二个数组的最后一个元素。