【问题标题】:How to get first AND last element of tuple at the same time如何同时获取元组的第一个和最后一个元素
【发布时间】:2012-04-21 19:43:27
【问题描述】:

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

感谢您的帮助

【问题讨论】:

    标签: python indexing tuples slice


    【解决方案1】:

    不知道怎么回事

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

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

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

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

    【讨论】:

    • 我只是想知道,因为到目前为止我还没有这么多地使用元组。谢谢,我会尽快接受你的回答(~8 分钟 :))
    【解决方案2】:
    s = (3,4,4,4,4,4,4,3)
    result = s[0], s[-1]
    

    【讨论】:

      【解决方案3】:

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

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

      例如

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

      输出 (3, 3)

      【讨论】:

        【解决方案4】:

        如果你使用的是 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] 不是
        猜你喜欢
        • 2013-12-01
        • 1970-01-01
        • 2015-08-22
        • 2012-07-17
        • 2023-04-09
        • 1970-01-01
        • 2018-12-29
        • 2014-12-19
        • 1970-01-01
        相关资源
        最近更新 更多