【问题标题】:Reverse part of an array using NumPy使用 NumPy 反转数组的一部分
【发布时间】:2013-07-04 11:22:50
【问题描述】:

我正在尝试使用数组切片来反转NumPy 数组的一部分。例如,如果我的数组是

a = np.array([1,2,3,4,5,6])

那么我可以得到一片b

b = a[::-1]

这是原始数组的视图。我想要的是一个部分反转的视图,例如

1,4,3,2,5,6

如果您不完全按照 NumPy 的设计方式进行操作,我会遇到性能问题,所以如果可能的话,我想避免“花哨”的索引。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    如果您不喜欢按一个索引关闭

    >>> a = np.array([1,2,3,4,5,6])
    >>> a[1:4] = a[1:4][::-1]
    >>> a
    array([1, 4, 3, 2, 5, 6])
    

    【讨论】:

      【解决方案2】:
      >>> a = np.array([1,2,3,4,5,6])
      >>> a[1:4] = a[3:0:-1]
      >>> a
      array([1, 4, 3, 2, 5, 6])
      

      【讨论】:

        【解决方案3】:

        您可以使用permutation matrices(这是部分反转数组的最简单的方法)。

        a = np.array([1,2,3,4,5,6])
        new_order_for_index = [1,4,3,2,5,6] # Careful: index from 1 to n !
        
        # Permutation matrix
        m = np.zeros( (len(a),len(a)) )
        for index , new_index  in enumerate(new_order_for_index ):
            m[index ,new_index -1] = 1
        
        print np.dot(m,a)
        # np.array([1,4,3,2,5,6])
        

        【讨论】:

        • 你不能在 for 循环中抛出代码并称其为 numpiest。
        猜你喜欢
        • 2012-11-23
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多