如何同时获取元组的第一个和最后一个元素

10
我需要获取任意大小的 numpy.ndarray 的第一个和最后一个维度。
如果我的数组形状为 shape(A) = (3,4,4,4,4,4,4,3),我第一个想法是执行 result = shape(A)[0,-1],但似乎这在元组中不起作用,为什么?
有没有比这更简洁的方法?
s=shape(A)
result=(s[0], s[-1])

感谢任何帮助

4个回答

24
我不知道哪里出了问题。
(s[0], s[-1])

另一种选择是使用 operator.itemgetter()

from operator import itemgetter
itemgetter(0, -1)(s)

我认为这并没有变得更好,虽然如果不计算实例化itemgetter实例所需的时间(如果需要经常执行此操作,则可以重复使用),它可能会稍微快一些。


我只是在想,因为我到目前为止还没有太多地使用元组。谢谢,我会尽快接受你的答案(大约8分钟:)) - Mischa Obrecht

6
s = (3,4,4,4,4,4,4,3)
result = s[0], s[-1]

5

我发现这个问题有点晚了,但是只是为了补充一种之前提到的非索引方法。

元组解包可以轻松地应用于获取第一个和最后一个元素。注意:下面的代码使用特殊的星号“*”语法,返回中间部分的列表,a和c存储第一个和最后一个值。

例如:

A= (3,4,4,4,4,4,4,3)
a, *b, c = A
print((a, c))

输出结果为 (3, 3)


2
如果你正在使用numpy数组,那么你可以这样做。
s = numpy.array([3,4,4,4,4,4,4,3])
result = s[[0,-1]]

[0,-1] 是第一个和最后一个元素的索引。它还允许更复杂的提取,如 s[2:4]


是的,但是shape不会返回np.array。 奇怪的是,即使对于元组,s[2:4]访问也是可能的,但s[0, -1]却不行。 - Mischa Obrecht

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接