【问题标题】:Trying to repeat a pair of values in a numpy array [duplicate]试图在一个numpy数组中重复一对值[重复]
【发布时间】:2021-02-10 08:55:00
【问题描述】:

我有一个保存为 numpy 数组 x = np.array([1,2]) 的坐标,我正在尝试创建一个重复 [1,2] n 次的数组。例如,要重复 4 次,我希望数组看起来像这样:

array([1,2],[1,2],[1,2],[1,2])

我已经尝试过使用该功能:

np.repeat(x, 4, axis=0)

但输出是扁平数组,如下所示:

array([1,1,1,1,2,2,2,2])

有人知道怎么做吗?

【问题讨论】:

标签: python arrays numpy repeat


【解决方案1】:

最简单的方法应该是[[1,2]]*4

[[1,2]]*4

[[1, 2], [1, 2], [1, 2], [1, 2]]

如果你想让它成为数组,np.array([[1,2]]*4) 可以工作。

【讨论】:

    【解决方案2】:

    我为这个问题定义了一个函数。你可以使用下面的函数repeatList:

    import numpy as np
    myListToRepeat = [1,2]
    def repeatList(initList , n):
        returnList = []
        for i in range(n):
            returnList.append(initList)
        return returnList
    npArray = np.array(repeatList(myListToRepeat , 4))
    print(npArray)
    

    输出

    [[1 2]
     [1 2]
     [1 2]
     [1 2]]
    

    【讨论】:

      【解决方案3】:

      您需要提供如下 您必须创建一个具有 2 维的数组 然后你的内部数组将是axis = 0的元素。重复将被做到

      import numpy as np
      num = np.array(([[1,2]]))
      print(np.repeat(num,4,axis =0))#[[1 2] [1 2] [1 2] [1 2]]
      

      【讨论】:

        【解决方案4】:
        import numpy as np
        x = np.array([1, 2])
        np.tile(x,[2,1])
        >>> array([[1, 2],
               [1, 2]])
        
        >>> np.tile(x,[4,1])
        array([[1, 2],
               [1, 2],
               [1, 2],
               [1, 2]])
        

        【讨论】:

        • 好,我们不需要改变原来的numpy数组
        【解决方案5】:

        使用 numpy tile 代替 numpy 重复。这适合您的情况: https://numpy.org/doc/stable/reference/generated/numpy.tile.html

        >>> import numpy as np
        >>> t = np.array([1, 2])
        >>> np.tile(t, 4)
        array([1, 2, 1, 2, 1, 2, 1, 2])
        

        【讨论】:

        • 仍然是一维数组
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 2017-05-06
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多