我需要获取任意大小的 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])
谢谢你的帮助
我不知道怎么了
(s[0], s[-1])
另一种选择是使用operator.itemgetter()
:
from operator import itemgetter
itemgetter(0, -1)(s)
不过,我不认为这会更好。(如果不计算实例化itemgetter
实例所需的时间可能会稍微快一点,如果经常需要此操作,可以重复使用。)
s = (3,4,4,4,4,4,4,3)
result = s[0], s[-1]
这么晚才遇到;但是,只是为了添加如前所述的非索引方法。
元组解包可以很容易地用于获取第一个和最后一个元素。注意:下面的代码使用特殊的星号 '*' 语法,它返回中间部分的列表,其中 a 和 c 存储第一个和最后一个值。
前任。
A= (3,4,4,4,4,4,4,3)
a, *b, c = A
print((a, c))
输出 (3, 3)
如果您使用的是 numpy 数组,那么您可以这样做
s = numpy.array([3,4,4,4,4,4,4,3])
result = s[[0,-1]]
其中[0,-1]
是第一个和最后一个元素的索引。它还允许更复杂的提取,例如s[2:4]