我想对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正在选择每个第二个索引,但是我仍然不清楚何时可以使用':'。或“,”在切片过程中是什么意思。
答案 0 :(得分:0)
在numpy中,运算符的工作方式如下:-[start_index:end_index:step]
。
这意味着当您索引M [1:,0:,:: 2]时,实际上要索引的是从第一个维度的第一个索引([1:]
)开始的所有内容,然后是从索引的开始的所有内容。第二维({{1)},最后每个元素的步长为2([0:]
)。
[::2]
用于分隔维度,因此我假设您实际要做的是,
以获取每个第二个数组的最后一个元素。