代码之家  ›  专栏  ›  技术社区  ›  SantoshGupta7

创建2d numpy数组的最快方法是从0开始,跨行增加1,然后继续到列中?

  •  0
  • SantoshGupta7  · 技术社区  · 6 年前

    第一行的第一个元素应以0开头,在行中递增1,在下一列中继续递增1,依此类推。

    这是我正在寻找的一个例子

    array([[0, 1, 2, 3],
           [4, 5, 6, 7],
           [8, 9, 10, 11],
           ...,
           [5231,  5232, 5233,  5234],
           [5235,  5236, 5237, 5238]], dtype=int32)
    

    例如,该解决方案应该能够应用于任何指定的二维尺寸。

    array([[0, 1, 2, ..., 78, 79, 80],
           [81, 82,  83, ..., 158, 159, 160],
           ...,
           [2253, 2254,  2255, ..., 2453, 2454, 2455]], dtype=int32)
    

    这些例子在数值上并不准确,我只是想证明它从0开始,跨行递增1,然后继续到下一行。

    我在考虑使用for循环分别填充每个值,但我不确定这是否是最快的解决方案,也不确定这是否是最简单、最优雅的方案。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Paul Panzer    6 年前

    你可以用

    np.arange(nrows*ncols).reshape(nrows,ncols)
    

    顺便说一句,这就是90%的示例二维数组是如何在如此枯燥的文章中创建的。

        2
  •  0
  •   Wilf Rosenbaum    6 年前

    创建一个一维数组,用所需的值初始化数组,然后使用凹凸重塑转换为二维数组。