【问题标题】:Tile rows of a 2D numpy array based on values in separate numpy vector根据单独的 numpy 向量中的值平铺 2D numpy 数组的行
【发布时间】:2017-05-25 05:32:41
【问题描述】:

我有一个源数组:

a = array([[1, 1, 2, 2],
           [3, 4, 5, 6],
           [7, 7, 7, 8]])

还有一个向量,表示我想平铺数组的每一行多少次:

count = array([3, 1, 2])

我想得到:

results =array([[1, 1, 2, 2],
                [1, 1, 2, 2],
                [1, 1, 2, 2],
                [3, 4, 5, 6],
                [7, 7, 7, 8],
                [7, 7, 7, 8]]

是否有矢量化/numpy 方式来实现这一点?

目前我正在使用迭代循环方法,当 len(a) 和/或 count 包含高值时它非常慢。

【问题讨论】:

    标签: python arrays numpy vectorization


    【解决方案1】:

    numpy.repeat() 是你所追求的:

    代码:

    np.repeat(a, count, axis=0)
    

    测试代码:

    import numpy as np
    
    a = np.array([[1, 1, 2, 2],
                  [3, 4, 5, 6],
                  [7, 7, 7, 8]])
    
    count = np.array([3, 1, 2])
    
    print(np.repeat(a, count, axis=0))
    

    结果:

    [[1 1 2 2]
     [1 1 2 2]
     [1 1 2 2]
     [3 4 5 6]
     [7 7 7 8]
     [7 7 7 8]]
    

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 2021-11-03
      • 1970-01-01
      • 2011-06-05
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多