数组的拼接

具有相同行数的数组可以进行水平方向的拼接,具有相同列数的数组可以进行垂直方向的拼接。[大谦MATLAB,dqmatlab点com]

水平方向拼接数组

MATLAB和Python都提供了相应的函数实现数组的水平方向拼接。要求进行拼接的数组具有相同的行数。

【MATLAB】

下面给定一个3*2的二维数组A和一个3*3的二维数组B:

code.matlab
>> A=ones(3, 2) * 3        % 32的二维数组,元素为3
A =
    3	3
    3	3
    3	3
>> B=rand(3)             % 33的二维数组,元素为随机数
B =
    0.2785	0.9649	0.9572
    0.5469	0.1576	0.4854
    0.9575	0.9706	0.8003

MATLAB中可以使用中括号直接水平方向拼接两个数组。中括号内A和B用空格或逗号间隔。

code.matlab
>> C=[A B]              % 水平聚合A和B
C =
    3	3	0.2785	0.9649	0.9572
    3	3	0.5469	0.1576	0.4854
    3	3	0.9575	0.9706	0.8003

也可以使用cat函数,指定拼接方向进行拼接。

code.matlab
>> C=cat(2, A, B);       % 沿行方向聚合
C =
    3	3	0.2785	0.9649	0.9572
    3	3	0.5469	0.1576	0.4854
    3	3	0.9575	0.9706	0.8003

【Python】

下面给定一个3*2的二维数组A和一个3*3的二维数组B:

code.python
>>> A=np.ones([3,2])*3
>>> A
array([[3., 3.],
       [3., 3.],
       [3., 3.]])
>>> B=np.random.rand(3,3)
>>> B
array([[0.04439422, 0.18058479, 0.12263343],
       [0.86262193, 0.07831324, 0.87259077],
       [0.30560772, 0.96537289, 0.60258906]])

Python中用NumPy包的hstack函数水平方向拼接数组。

code.python
>>> C=np.hstack([A,B])
>>> C
array([[3.        , 3.        , 0.04439422, 0.18058479, 0.12263343],
       [3.        , 3.        , 0.86262193, 0.07831324, 0.87259077],
       [3.        , 3.        , 0.30560772, 0.96537289, 0.60258906]])

垂直方向拼接数组

MATLAB和Python都提供了相应的函数实现数组的垂直方向拼接。要求进行拼接的数组具有相同的列数。

【MATLAB】

下面给定一个2*5的二维数组A和一个3*5的二维数组B:

code.matlab
>> A=ones(2, 5) * 6;        % 25的二维数组,元素为6
A =
    6.0000    6.0000    6.0000    6.0000    6.0000
    6.0000    6.0000    6.0000    6.0000    6.0000
>> B=rand(3, 5);           % 35的二维数组,元素为随机数
B =
    0.6154    0.7382    0.9355    0.8936    0.8132
    0.7919    0.1763    0.9169    0.0579    0.0099
    0.9218    0.4057    0.4103    0.3529    0.1389

MATLAB中可以使用中括号直接垂直方向拼接两个数组。中括号内A和B用分号间隔。

code.matlab
>> C=[A; B]              % 垂向聚合A和B
C =
    6.0000    6.0000    6.0000    6.0000    6.0000
    6.0000    6.0000    6.0000    6.0000    6.0000
    0.6154    0.7382    0.9355    0.8936    0.8132
    0.7919    0.1763    0.9169    0.0579    0.0099
    0.9218    0.4057    0.4103    0.3529    0.1389

也可以使用cat函数,指定拼接方向1进行拼接。或使用vertcat函数进行拼接。

code.matlab
>> C=vertcat(A, B);      % 垂直方向聚合

得到与上面相同的拼接结果。

【Python】

下面给定一个2*5的二维数组A和一个3*5的二维数组B:

code.python
>>> A=np.ones([2,5])*6
>>> A
array([[6., 6., 6., 6., 6.],
       [6., 6., 6., 6., 6.]])
>>> B=np.random.rand(3,5)
>>> B
array([[0.54194254, 0.12062571, 0.39075449, 0.94586332, 0.1877638 ],
       [0.79169861, 0.68249945, 0.11723974, 0.42827707, 0.04526691],
       [0.99758353, 0.5013061 , 0.27966209, 0.10101894, 0.18750533]])

Python中用NumPy包的vstack函数垂直方向拼接数组。

code.python
>>> C=np.vstack([A,B])
>>> C
array([[6.        , 6.        , 6.        , 6.        , 6.        ],
       [6.        , 6.        , 6.        , 6.        , 6.        ],
       [0.54194254, 0.12062571, 0.39075449, 0.94586332, 0.1877638 ],
       [0.79169861, 0.68249945, 0.11723974, 0.42827707, 0.04526691],
       [0.99758353, 0.5013061 , 0.27966209, 0.10101894, 0.18750533]])