具有相同行数的数组可以进行水平方向的拼接,具有相同列数的数组可以进行垂直方向的拼接。[大谦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]])