之前使用MATLAB处理矩阵,矩阵的各种拼接很简单,而且可视化比较方便,使用Python处理矩阵以后,有很多的[],看起来没有那么直观,关于矩阵的横向拼接和纵向拼接方法做一个总结,并且为了便于记忆,还是得要直观的画一下结果。

一、使用numpy

1.1 np.append

  1. import numpy as np
  2. a = np.array([[1, 3], [5, 7]]);
  3. b = np.array([[2, 4], [6, 8]]);
  4. c = np.append(a, b);
  5. d = np.append(a, b, axis=0);
  6. e = np.append(a, b, axis=1);
  7. print('c=\n', c);
  8. print('d=\n', d);
  9. 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]] image.png 图1. np.append结果

将一个数添加到一个向量中,也可以使用append(),如下:

  1. import numpy as np
  2. a = np.array([1, 2, 3]);
  3. b = np.append(0, a);
  4. c = np.append(a, 4);
  5. print('a=', a);
  6. print('b=', b);
  7. 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

  1. import numpy as np
  2. a = np.array([[1, 3], [5, 7]]);
  3. b = np.array([[2, 4], [6, 8]]);
  4. c = np.stack((a, b));
  5. d = np.vstack((a, b));
  6. e = np.hstack((a, b));
  7. f = np.dstack((a, b));
  8. print('c=', c);
  9. print('d=', d);
  10. print('e=', e);
  11. print('f=', f);

c= [[[1 3] [5 7]]

  1. [[2 4]
  2. [6 8]]]

d= [[1 3]

  1. [5 7]
  2. [2 4]
  3. [6 8]]

e= [[1 3 2 4]

  1. [5 7 6 8]]

f= [[[1 2]

  1. [3 4]]
  2. [[5 6]
  3. [7 8]]]

1.png 图2. np.stack等结果

1.3 np.concatenate

  1. import numpy as np
  2. a = np.array([[1, 3], [5, 7]]);
  3. b = np.array([[2, 4], [6, 8]]);
  4. c = np.concatenate((a, b));
  5. d = np.concatenate((a, b), axis=0);
  6. e = np.concatenate((a, b), axis=1);
  7. print('c=', c);
  8. print('d=', d);
  9. print('e=', e);

c= [[1 3]

  1. [5 7]
  2. [2 4]
  3. [6 8]]

d= [[1 3]

  1. [5 7]
  2. [2 4]
  3. [6 8]]

e= [[1 3 2 4]

  1. [5 7 6 8]]

image.png 图3. np.concatenate结果

二、list列表

2.1 a+b

  1. import numpy as np
  2. a = [[1, 3], [5, 7]];
  3. b = [[2, 4], [6, 8]];
  4. c = a+b;
  5. print('c=', c);

c= [[1, 3], [5, 7], [2, 4], [6, 8]] image.png 图4. a+b结果

2.2 a.append(b)

  1. import numpy as np
  2. a = [[1, 3], [5, 7]];
  3. b = [[2, 4], [6, 8]];
  4. a.append(b)
  5. print('a=', a);

a= [[1, 3], [5, 7], [[2, 4], [6, 8]]] image.png 图5. a.append(b)结果 我们上述的len(a)长度为3,有点类似于Matlab中的元胞,有3个元素,分别是[1, 3], [5, 7]和[[2, 4, [6, 8]]]这三个。

2.3 a.extend(b)

  1. import numpy as np
  2. a = [[1, 3], [5, 7]];
  3. b = [[2, 4], [6, 8]];
  4. a.extend(b)
  5. print('a=', a);
  6. print(len(a))

a= [[1, 3], [5, 7], [2, 4], [6, 8]]

4 image.png 图6. a.extend结果

三、参考链接

参考链接1:python中矩阵合并、拼接、组合