Python 反向切片
我有一个从0到999的数字数组,我想制作一个从列表中的最后一个元素(999)到中间的(500)的片段。p> 测试[500:][:::-1]可以工作,但是如果我有一个二维数组,并且我只想沿着第零轴执行,那么它就不工作了,因为它还反转了第二个轴Python 反向切片,python,python-3.x,numpy,numpy-slicing,Python,Python 3.x,Numpy,Numpy Slicing,我有一个从0到999的数字数组,我想制作一个从列表中的最后一个元素(999)到中间的(500)的片段。p> 测试[500:][:::-1]可以工作,但是如果我有一个二维数组,并且我只想沿着第零轴执行,那么它就不工作了,因为它还反转了第二个轴 import numpy as np test = np.arange(1000) test[500:][::-1] 您可以使用步骤-1从-1到停止索引进行切片: > import numpy as np > n = np.arange(20
import numpy as np
test = np.arange(1000)
test[500:][::-1]
您可以使用步骤
-1
从-1
到停止索引进行切片:
> import numpy as np
> n = np.arange(20)
> n[-1:10:-1]
array([19, 18, 17, 16, 15, 14, 13, 12, 11])
> # or (thanks iz_)
> n[:10:-1]
array([19, 18, 17, 16, 15, 14, 13, 12, 11])
您可以使用np.flip()
顺便说一句,
n[:10:-1]
也可以工作。开始-1
是多余的。谢谢@iz。这是一个很好的提示;我不知道。出于某种原因,缺乏明确性困扰着我——但可能需要一些时间来适应。我想这是明确性和简洁性之间的权衡。就我个人而言,我更喜欢n[:10:-1]
,因为我可以查看它并立即看到:10
-10个元素,-1
-相反。不管怎么说,这是基于观点的+1您的2D阵列看起来怎么样?如果它类似于np.arange(2000).重塑(21000),则可以对轴0执行arr[0][:500:-1]
>>> x = np.arange(20)
>>> x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> np.flip(x)
array([19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3,
2, 1, 0])