【问题标题】:Slicing 3d Arrays切片 3d 数组
【发布时间】:2019-10-27 12:14:42
【问题描述】:

我想以仅打印第二个数组中每一行的最后一个元素的方式对 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】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      相关资源
      最近更新 更多