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