为什么结果不一样? Numpy 切片和索引

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

基本上我想获得变量“cubote”的一部分,所以我尝试了两种应该以相同方式工作的方法,但事实并非如此。

我的代码:

   import numpy as np

   # Create a 3x3x3 cube
   cubote = np.arange(27).reshape(3,3,3)

   # Compare the results
   result1 = cubote[0:2,0:2,0:2]
   result2 = cubote[0:2][0:2][0:2]

   print(result1)
   print("Shape of result1:", result1.shape)

   print(result2)
   print("Shape of result2:", result2.shape)

输出:

结果1:

   [[[ 0  1]
     [ 3  4]]

    [[ 9 10]
     [12 13]]]
   Shape of result1: (2, 2, 2)

结果2:

   [[[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]]

    [[ 9 10 11]
     [12 13 14]
     [15 16 17]]]
   Shape of result2: (2, 3, 3)

我预计这两个结果是相同的。 我认为结果 1 是有道理的,但结果 2 没有按我的预期工作。为什么?

python numpy multidimensional-array indexing slice
1个回答
0
投票

cubote[0:2]
是形状为
(2, 3, 3)
的数组。如果您向该数组添加更多
[0:2]
,您将一次又一次地从第一个轴 获取前 2 个元素。所以即使 cubote[0:2][0:2][0:2][0:2][0:2][0:2][0:2]
 也会产生相同的结果。

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