从开始到结束的Numpy切片

时间:2018-06-15 17:21:52

标签: python numpy

array = numpy.array([1,2,3,4,5,6,7,8,9,10])
array[-1:3:1]
>> []

我希望这个数组索引返回如下内容:

[10,1,2,3]

5 个答案:

答案 0 :(得分:4)

使用np.roll

  

沿给定轴滚动数组元素。超出最后位置的元素将在第一个位置重新引入。

>>> np.roll(x, 1)[:4]
array([10,  1,  2,  3])

答案 1 :(得分:4)

np.roll允许你包装一个可能有用的数组

import numpy as np

a = np.array([1,2,3,4,5,6,7,8,9,10])

b = np.roll(a,1)[0:4]

结果

>>> b
array([10  1  2  3])

答案 2 :(得分:2)

作为上述答案之一,滚动数组会生成整个数组的副本,这可能是大型数组的内存消耗。因此,另一种不转换为列表的方法是:

np.concatenate([array[-1:],array[:3]])

答案 3 :(得分:2)

使用np.r_

import numpy as np
>>> 
>>> arr = np.arange(1, 11)
>>> arr[np.r_[-1:3]]
array([10,  1,  2,  3])

答案 4 :(得分:-1)

最简单的解决方案是首先转换为列表,然后加入并返回数组。

因此:

>>> numpy.array(list(array[-1:]) + list(array[:3]))
array([10,  1,  2,  3])

通过这种方式,您可以选择要开始和结束的索引,而不会创建整个数组的副本