切片3d数组

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

我想以仅打印第二个数组中每行最后一个元素的方式对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正在选择每个第二个索引,但是我仍然不清楚何时可以使用':'。或“,”在切片过程中的含义是什么。

python arrays slice
1个回答
0
投票

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

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

[,用于分隔尺寸,所以我假设您实际要做的是M[:,1,-1]以获取每个第二个数组的最后一个元素。

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