Nés*_*tor 9 python arrays numpy
假设您有以下numpy数组,
>>> x = numpy.array([0,1,2,3,4,5,6,7,8,9,10])
Run Code Online (Sandbox Code Playgroud)
并且你想提取一个新的numpy数组,只包含前三(3)和最后四(4)个元素,即
>>> y = x[something]
>>> print y
[0 1 2 7 8 9 10]
Run Code Online (Sandbox Code Playgroud)
这可能吗?我知道要提取前面提到的前三个数字x[:3]
并提取你做的最后四个数字x[-4:]
,但有一种简单的方法可以在一个简单的切片中提取所有这些数字吗?我知道这可以通过例如追加两个电话来完成,
>>> y = numpy.append(x[:3],x[-4:])
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有一些简单的小技巧以更直接,更pythonic的方式来做,而不必x
再次参考(即,我首先想到也许x[-4:3]
可以工作,但我立刻意识到它没有意义).
我认为你应该使用索引数组。
indices = list(range(3))+list(range(-4,0))
y = x[indices]
Run Code Online (Sandbox Code Playgroud)
您可能可以删除list
强制转换(不确定,因为 python 3 稍微改变了行为)。或者您可以使用numpy
范围生成器。
编辑:不知道为什么投反对票,因为它有效:
import numpy
x = numpy.array([0,1,2,3,4,5,6,7,8,9,10])
indices = list(range(3))+list(range(-4,0))
y = x[indices]
print(y)
Run Code Online (Sandbox Code Playgroud)