对于如何以相反的顺序引用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]]
谢谢!
答案 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]]