numpy:反向引用元素

时间:2019-02-01 21:10:12

标签: python numpy

对于如何以相反的顺序引用numpy数组的元素,我有些困惑:例如:

arr = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]])
print(arr[1:3,:]) #gives me
[[ 6  7  8  9 10]
 [11 12 13 14 15]]

但是

print(arr[3:1,:]  #gives me
[]

反正我可以从元素3开始并向后打印直到元素1吗? 所以预期的输出是

[[11 12 13 14 15]
 [ 6  7  8  9 10]]

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以从另一端开始切成薄片。但是请注意,在python中切片时,必须指定aList[start:stop:step]stop不包括在内。因此[1:3]将从第一个元素返回到3d元素(不包括3d)。

因此,要颠倒顺序,您必须按照@danielmesejo的建议执行arr[2:0:-1],因为如果您执行了arr[3:0:-1],在这种情况下,将包含3rd元素,您将错误index out of range。请注意,您还必须指定step中的-1来颠倒顺序。

答案 1 :(得分:0)

直接表达您正在向后索引的事实的另一种可能性是使用

arr[-2:,:]
array([[11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20]])

您还可以将显式类型转换写到列表,因为这是您的问题中给出的

(arr[-2:,:]).tolist()
[[11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]