【问题标题】:Generate (NxN) array from (Nx1) array in Python在 Python 中从 (Nx1) 数组生成 (NxN) 数组
【发布时间】:2021-12-06 06:04:41
【问题描述】:

考虑以下(Nx1) 数组:

a = [[1]
     [2]
     [3]
     [4]
     [5]]

如何从a 生成(NxN) 数组?例如N = 5:

a = [[1 1 1 1 1]
     [2 2 2 2 2]
     [3 3 3 3 3]
     [4 4 4 4 4]
     [5 5 5 5 5]]

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    如果要复制值,可以使用np.repeat

    >>> np.repeat(a, len(a), 1)
    array([[1, 1, 1, 1, 1],
           [2, 2, 2, 2, 2],
           [3, 3, 3, 3, 3],
           [4, 4, 4, 4, 4],
           [5, 5, 5, 5, 5]])
    

    否则,您应该使用np.broadcast_to 执行广播并用视图包装a

    >>> np.broadcast_to(a, (len(a),)*2)
    array([[1, 1, 1, 1, 1],
           [2, 2, 2, 2, 2],
           [3, 3, 3, 3, 3],
           [4, 4, 4, 4, 4],
           [5, 5, 5, 5, 5]])
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      a = [[1], [2], [3], [4], [5]]
      out = []
      for el in a:
          out.append(el * len(a))
      return out
      

      如果在开头计算一次'a'列表的长度会更好。

      【讨论】:

        【解决方案3】:

        生成二维数组的pythonic one liner

        a = [[1], [2], [3], [4], [5]]
        N = 5
        x = [i * N for i in a]
        

        来源:

        Python List Comprehensions

        How can I define multidimensional arrays in python?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-31
          • 2022-06-13
          • 2018-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多