Python,例如有两个一维数组,怎么变成二维数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python,例如有两个一维数组,怎么变成二维数组?相关的知识,希望对你有一定的参考价值。

参考技术A a = [ 1,2,3,4,5,6]

b = [7,8,9,10,11,12]

c = numpy.vstack((a,b)).T

然后c就等于[ [1,7], [2,8], [3,9], [4,10], [5,11], [6,12] ]

LeetCode - 2022 - 将一维数组变成二维数组 - Java

题目


题目解析

使用 original 数组中的所有元素,去组成一个 m * n 的二维数组。如果组成不了【 m * n != original】,则返回一个 空的二维数组。
难点: 如果将一维数组 original 中的元素,每次复制 n 个元素,到 二维的数组一行里。(m 行 == 复制 m 次)

这里就需要借助数组的拷贝方式。一共有4 种方式,可参考数组的定义与使用文章,你们可以在目标中找: 数组拷贝【位置偏下】


下面我们就是用数组四种拷贝方式 中 System.arraycopy( ) 来实现代码的


src == source - 源头;dest == destination - 目标;
srcPos == source position - 源头中某个位置;
destPos == destination positon - 目标中某个位置;
length - 长度/元素个数;
System.arraycopy 的功能就是: 把 源头的数组,从 源头中某个位置开始 拷贝,拷贝到 destination 中的 某个位置。拷贝元素个数为 length / 拷贝长度为 length。


代码如下:

class Solution 
    public int[][] construct2DArray(int[] original, int m, int n) 
        if(original.length != m * n)
            return new int[0][];
        
        int[][] array = new int[m][n];
        for(int i = 0;i < original.length;i+=n)
            System.arraycopy(original,i,array[i/n],0,n);
        
        return array;
    


代码细节


还有一种方法,就是双重循环拷贝。

一个元素一个元素的拷贝

代码如下

class Solution 
    public int[][] construct2DArray(int[] original, int m, int n) 
        if(original.length != m * n)
            return new int[0][];
        
        int[][] array = new int[m][n];
        // for(int i = 0;i < original.length;i+=n)
        //     System.arraycopy(original,i,array[i/n],0,n);
        // 
        int o = 0;// 用来记录 拷贝到 original数组中第几个元素的下标
        for(int i = 0;i < m; i++)
            for(int j = 0; j < n; j++)
                array[i][j] = original[o];
                o++;
            
        
        return array;
    

以上是关于Python,例如有两个一维数组,怎么变成二维数组?的主要内容,如果未能解决你的问题,请参考以下文章

怎么样给一个一维数组全赋成false

python中如何将多个一维数组变成二维数组

php中:计算任意一维数字数组的奇数个数、偶数个数?代码怎么写.

thinkphp怎么将多维数组变成一维数组

怎么样给一个一维数组全赋成false

php 比如有一个一维数组 我想给这个数组增加一个元素 这个元素是一个二维数组 该怎么写啊