之前使用MATLAB处理矩阵,矩阵的各种拼接很简单,而且可视化比较方便,使用Python处理矩阵以后,有很多的[],看起来没有那么直观,关于矩阵的横向拼接和纵向拼接方法做一个总结,并且为了便于记忆,还是得要直观的画一下结果。
一、使用numpy
1.1 np.append
import numpy as np
a = np.array([[1, 3], [5, 7]]);
b = np.array([[2, 4], [6, 8]]);
c = np.append(a, b);
d = np.append(a, b, axis=0);
e = np.append(a, b, axis=1);
print('c=\n', c);
print('d=\n', d);
print('e=\n', e);
c= [1 3 5 7 2 4 6 8] d= [[1 3] [5 7] [2 4] [6 8]] e=[[1 3 2 4] [5 7 6 8]] 图1. np.append结果
将一个数添加到一个向量中,也可以使用append()
,如下:
import numpy as np
a = np.array([1, 2, 3]);
b = np.append(0, a);
c = np.append(a, 4);
print('a=', a);
print('b=', b);
print('c=', c);
a= [1 2 3] b= [0 1 2 3] c= [1 2 3 4]
1.2 np.stack, np.vstack, np.hstack
import numpy as np
a = np.array([[1, 3], [5, 7]]);
b = np.array([[2, 4], [6, 8]]);
c = np.stack((a, b));
d = np.vstack((a, b));
e = np.hstack((a, b));
f = np.dstack((a, b));
print('c=', c);
print('d=', d);
print('e=', e);
print('f=', f);
c= [[[1 3] [5 7]]
[[2 4]
[6 8]]]
d= [[1 3]
[5 7]
[2 4]
[6 8]]
e= [[1 3 2 4]
[5 7 6 8]]
f= [[[1 2]
[3 4]]
[[5 6]
[7 8]]]
图2. np.stack等结果
1.3 np.concatenate
import numpy as np
a = np.array([[1, 3], [5, 7]]);
b = np.array([[2, 4], [6, 8]]);
c = np.concatenate((a, b));
d = np.concatenate((a, b), axis=0);
e = np.concatenate((a, b), axis=1);
print('c=', c);
print('d=', d);
print('e=', e);
c= [[1 3]
[5 7]
[2 4]
[6 8]]
d= [[1 3]
[5 7]
[2 4]
[6 8]]
e= [[1 3 2 4]
[5 7 6 8]]
图3. np.concatenate结果
二、list列表
2.1 a+b
import numpy as np
a = [[1, 3], [5, 7]];
b = [[2, 4], [6, 8]];
c = a+b;
print('c=', c);
c= [[1, 3], [5, 7], [2, 4], [6, 8]] 图4. a+b结果
2.2 a.append(b)
import numpy as np
a = [[1, 3], [5, 7]];
b = [[2, 4], [6, 8]];
a.append(b)
print('a=', a);
a= [[1, 3], [5, 7], [[2, 4], [6, 8]]] 图5. a.append(b)结果 我们上述的len(a)长度为3,有点类似于Matlab中的元胞,有3个元素,分别是[1, 3], [5, 7]和[[2, 4, [6, 8]]]这三个。
2.3 a.extend(b)
import numpy as np
a = [[1, 3], [5, 7]];
b = [[2, 4], [6, 8]];
a.extend(b)
print('a=', a);
print(len(a))
a= [[1, 3], [5, 7], [2, 4], [6, 8]]
4 图6. a.extend结果