0

给定一个numpy数组:

a = arange(10,20,1)

我经常需要一个包含数组的第一个和最后一个元素的元组:

w = a[0],a[-1]

是否有一个方便的 python 切片快捷方式可以在单个引用中执行此操作a

4

3 回答 3

5

是的,使用 Numpy 的高级索引

w = a[[0, -1]]
于 2012-10-11T03:17:55.247 回答
2

也许你想要:

a[::len(a)-1]

这告诉它从头到尾给你一个切片,“step”值比数组的长度小一个(所以取第一个值,然后取一个后面的len(a)-1索引,这是最后一个值)。

它似乎在 numpy 中运行良好:

>>> import numpy
>>> a = numpy.arange(10, 20, 1)
>>> a
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> a[::len(a)-1]
array([10, 19])
>>> tuple(a[::len(a)-1])
(10, 19)
于 2012-10-11T03:12:17.357 回答
2

你可以轻松制作一个

>>> from operator import itemgetter
>>> from numpy import arange
>>> a = arange(10,20,1)
>>> first_and_last = itemgetter(0, -1)
>>> first_and_last(a)
(10, 19)
于 2012-10-11T03:16:27.353 回答