9

我需要获取任意大小的 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

4 回答 4

21

我不知道怎么了

(s[0], s[-1])

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

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

不过,我不认为这会更好。(如果不计算实例化itemgetter实例所需的时间可能会稍微快一点,如果经常需要此操作,可以重复使用。)

于 2012-04-09T12:28:32.893 回答
6
s = (3,4,4,4,4,4,4,3)
result = s[0], s[-1]
于 2012-04-09T12:28:40.177 回答
4

这么晚才遇到;但是,只是为了添加如前所述的非索引方法。

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

前任。

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

输出 (3, 3)

于 2019-01-06T15:29:17.787 回答
2

如果您使用的是 numpy 数组,那么您可以这样做

s = numpy.array([3,4,4,4,4,4,4,3])
result = s[[0,-1]]

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

于 2012-04-09T12:36:45.023 回答