【问题标题】:Reshape jagged array and fill with zeros重塑锯齿状数组并用零填充
【发布时间】:2020-10-31 10:16:41
【问题描述】:

我希望完成的任务如下:考虑一个一维数组a和一个长度为N的索引数组parts。示例:

a = np.arange(9)
parts = np.array([4, 6, 9])

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

我想将a 转换为形状为(N, <length of longest partition in parts>)2-D 数组,将a 的值插入到 每一行中indx 的每个索引中二维数组,用零填充行的剩余部分,如下所示:

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

我不想使用循环。对此我无法理解,感谢任何帮助。

【问题讨论】:

    标签: python arrays numpy indexing slice


    【解决方案1】:

    这是一个boolean-indexing -

    def jagged_to_regular(a, parts):
        lens = np.ediff1d(parts,to_begin=parts[0])
        mask = lens[:,None]>np.arange(lens.max())
        out = np.zeros(mask.shape, dtype=a.dtype)
        out[mask] = a
        return out
    

    示例运行 -

    In [46]: a = np.arange(9)
        ...: parts = np.array([4, 6, 9])
    
    In [47]: jagged_to_regular(a, parts)
    Out[47]: 
    array([[0, 1, 2, 3],
           [4, 5, 0, 0],
           [6, 7, 8, 0]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-15
      • 2012-11-27
      • 2021-05-13
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多