【问题标题】:How to repeat a numpy array on both axis? [duplicate]如何在两个轴上重复一个 numpy 数组? [复制]
【发布时间】:2019-12-03 10:13:03
【问题描述】:

我有一个二维数组,假设数组是:

1 2 3 
4 5 6

我希望它在两个轴上重复 3 次,所以它看起来像:

1 1 1 2 2 2 3 3 3 
1 1 1 2 2 2 3 3 3 
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6  

我尝试使用 numpy.repeat 但不成功。 有什么建议么?谢谢

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用 kronicker 产品、np.kron 和块大小的 ones 数组来做到这一点。

    a = np.arange(6).reshape(2,3) + 1
    np.kron(a, np.ones((3,3), dtype = a.dtype))
    
    Out[]: 
    array([[1, 1, 1, 2, 2, 2, 3, 3, 3],
           [1, 1, 1, 2, 2, 2, 3, 3, 3],
           [1, 1, 1, 2, 2, 2, 3, 3, 3],
           [4, 4, 4, 5, 5, 5, 6, 6, 6],
           [4, 4, 4, 5, 5, 5, 6, 6, 6],
           [4, 4, 4, 5, 5, 5, 6, 6, 6]])
    

    【讨论】:

    • 这很好,但我怎样才能让我的数组保持相同的 dtype?
    【解决方案2】:

    你可以用numpy repeat做到这一点

    >>> data = np.array([[1,2,3],[4,5,6]])
    >>> data
    array([[1, 2, 3],
           [4, 5, 6]])
    >>> np.repeat(data,[3,3,3],axis=1).repeat([3,3],axis=0)
    array([[1, 1, 1, 2, 2, 2, 3, 3, 3],
           [1, 1, 1, 2, 2, 2, 3, 3, 3],
           [1, 1, 1, 2, 2, 2, 3, 3, 3],
           [4, 4, 4, 5, 5, 5, 6, 6, 6],
           [4, 4, 4, 5, 5, 5, 6, 6, 6],
           [4, 4, 4, 5, 5, 5, 6, 6, 6]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多