基本上我想获得变量“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 没有按我的预期工作。为什么?
cubote[0:2]
是形状为 (2, 3, 3)
的数组。如果您向该数组添加更多 [0:2]
,您将一次又一次地从第一个轴 获取前 2 个元素。所以即使 cubote[0:2][0:2][0:2][0:2][0:2][0:2][0:2]
也会产生相同的结果。