【问题标题】:Reversed array in numpy?numpy中的反转数组?
【发布时间】:2013-04-01 17:12:49
【问题描述】:

Numpy tentative tutorial 表明a[ : :-1] 是一个相反的a。有人可以解释一下我们是如何到达那里的吗?

我了解a[:] 表示a 的每个元素(轴=0)。根据我的理解,下一个: 应该表示要跳过(或句号)的元素数。

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

这不是 numpy,它是 Python。

在 Python 中,有用于序列/可迭代的切片,语法如下

seq[start:stop:step] => a slice from start to stop, stepping step each time.

所有参数都是可选的,但必须有 : 才能让 Python 将其识别为切片。

对于step,负值也可以以相反的顺序复制相同的序列/可迭代:

>>> L = range(10)
>>> L[::-1] 
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

numpy 像任何优秀的 3rd 方库一样遵循“规则”..

>>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

this link

【讨论】:

    【解决方案2】:

    正如其他人所指出的,这是一种 python 切片技术,numpy 只是效仿。希望这有助于解释它是如何工作的:

    最后一位是步长。 1 表示一次步进一个元素,- 则相反。

    空格表示第一个和最后一个,除非您的步长为负,在这种情况下它们表示最后一个和第一个:

    In [1]: import numpy as np
    
    In [2]: a = np.arange(5)
    
    In [3]: a
    Out[3]: array([0, 1, 2, 3, 4])
    
    In [4]: a[0:5:1]
    Out[4]: array([0, 1, 2, 3, 4])
    
    In [5]: a[0:5:-1]
    Out[5]: array([], dtype=int64)
    
    In [6]: a[5:0:-1]
    Out[6]: array([4, 3, 2, 1])
    
    In [7]: a[::-2]
    Out[7]: array([4, 2, 0])
    

    第 5 行给出了一个空数组,因为它试图从0th 元素向后退到5th。
    切片不包含“端点”(命名为最后一个元素),因此第 6 行在向后移动时会错过 0

    【讨论】:

    • 为什么a[5:-1:-1] 返回array([], dtype=int64) 而不是正确答案array([4, 3, 2, 1, 0])
    • @AbhishekNaik 在python索引中,negative numbers count from the end toward是开头,所以a[-1]是最后一个元素。因此,a[5:-1:-1] 等价于 a[5:4:-1],所以空数组 正确答案。要到达终点(在任一方向),请使用 None 或将其留空:a[5:None:-1]a[5::-1]
    【解决方案3】:

    这不是numpy特有的,切片a[::-1]等价于slice(None, None, -1),其中第一个参数是开始索引,第二个参数是结束索引,第三个参数是步骤。 None for start 或 stop 的行为与使用序列的开头或结尾相同,-1 for step 将以相反的顺序遍历序列。

    【讨论】:

      【解决方案4】:

      您可以使用reversed Python 内置:

      import numpy as np
      
      bins = np.arange(0.0, 1.1, .1)
      for i in reversed(bins):
          print(i)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 2014-05-22
        • 2017-08-26
        • 2012-07-23
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多