揭秘 numpy 索引/切片

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

您能帮助揭开以下 numpy 索引/切片行为的神秘面纱吗?谢谢!

arr = np.arange(60).reshape(3,4,5)
print(arr[2, :, 4])     #1

print(arr[[2], :, 4])   #2
print(arr[2, :, [4]])   #3
print(arr[[2], :, [4]]) #4
[44 49 54 59]
[[44 49 54 59]]
[[44 49 54 59]]
[[44 49 54 59]]

#1
是可以理解的,而当涉及到结果的形状((1,4) 数组)时,#2,#3,#4 对我来说真的很困惑。更具体地说,内部
[]
什么时候会影响结果数组的维度?

python numpy indexing numpy-slicing
1个回答
0
投票

基本思想是,就像

x[0]
是数组的第一个元素一样,您可以使用
x[[1, 3, 4, 6]]
创建一个新数组,取出数组的四个元素。请注意,此表示法为数组添加了一个维度。

请注意,无论使用

[]
还是参数是 numpy 数组,都会得到相同的结果。

如果索引中有多个这样的数组或列表,它们将合并在一起。 因此你可以使用:

x[[1, 2],[3, 4]]
获取元素
x[1,3]
x[2, 4]
作为二元素数组。有许多 numpy 函数返回数组列表,其中第一个数组是第一个索引,第二个数组是第二个索引,依此类推。您可以直接在索引表示法中使用这些数组。

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