1. 引入numpy第三方库
首先我们引入numpy这个第三方库,如果有同学没安装numpy可在命令行中pip install numpy进行安装(Mac用户 sudo pip3 install numpy)
- 测试采用python版本3.7.0 64bit
1 |
import numpy as np |
2. array行列获取
1 2 3 4 5 6 |
import numpy as np a=np.array([[ 2, 7, 4, 2], [35, 9, 1, 5], [22, 12, 3, 2]]) print(a[:, [0]]) ## 第0列 print(a[[1],:]) ## 第1行 |
- 输出结果
1 2 3 4 |
[[ 2] [35] [22]] [[35 9 1 5]] |
3. array的合并
3.1. 垂直合并
1 2 3 |
A = np.array([1, 2, 3, 4]) B = np.array([2, 3, 4, 5]) print(np.vstack((A, B))) |
3.2. 水平合并
1 2 3 4 5 |
print(np.hstack((A, B))) #水平合并 C = np.array([7, 7, 7])[:, np.newaxis] # 纵向加一个维度,将array转为3行1列的矩阵 D = np.array([9, 9, 9])[:, np.newaxis] E = np.concatenate((C, D, D, C), axis=1) # axis=1为水平合并, axis=0为垂直合并 print(E) |
3.3. array的合并代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import numpy as np A = np.array([1, 2, 3, 4]) B = np.array([2, 3, 4, 5]) C = np.array([7, 7, 7])[:, np.newaxis] # 纵向加一个维度,将array转为3行1列的矩阵 D = np.array([9, 9, 9])[:, np.newaxis] print('打印A与B:') print(A) print(B) print(C) print('\n垂直合并:') print(np.vstack((A, B))) #np.vstack需要输入tuple,需加() print('\n水平合并:') print(np.hstack((A, B))) print('\n水平合并,axis=1 为水平合并 反之为垂直合并:') E = np.concatenate((C,D,D,C),axis=1) print(E) F = np.array([A,B]).T #翻转矩阵 print('打印翻转矩阵F:') print(F) |
- 输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
打印A与B: [1 2 3 4] [2 3 4 5] [[7] [7] [7]] 垂直合并: [[1 2 3 4] [2 3 4 5]] 水平合并: [1 2 3 4 2 3 4 5] 水平合并,axis=1 为水平合并 反之为垂直合并: [[7 9 9 7] [7 9 9 7] [7 9 9 7]] 打印翻转矩阵F: [[1 2] [2 3] [3 4] [4 5]] |
4. 矩阵的分割
4.1. 水平分割
1 2 3 4 |
A = np.array(12).reshape((3, 4)) print(np.split(A, 2, axis=1)) # 表示对A进行分割,分为两块,axis=1为水平分割 print(np.hsplit(A, 2)) # 效果同上 print(np.array_split(A, 3, axis=1)) # 不均等分割 |
4.2. 垂直分割
1 2 3 |
print(np.split(A, 3, axis=0)) # 表示对A进行分割,分为3块,axis=0为垂直分割 print(np.vsplit(A, 3)) # 效果同上 print(np.array_split(A, 2, axis=0)) # 不均等分割 |
4.3. 矩阵分割代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import numpy as np G = np.arange(12).reshape((3,4)) #输出3行,4列 print('打印矩阵G:') print(G) print('\nG水平分割为2块:') print(np.hsplit(G, 2)) print('\nG水平分割为两块:') print(np.split(G, 2, axis=1)) # 表示对A进行分割,分为两块,axis=1为水平分割 print('\nG垂直分割为3块:') print(np.vsplit(G, 3)) # 不均等分割 print('\nG垂直不均等分割:') print(np.array_split(G, 2, axis=0)) |
- 输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
打印矩阵G: [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] G水平分割为2块: [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])] G水平分割为两块: [array([[0, 1], [4, 5], [8, 9]]), array([[ 2, 3], [ 6, 7], [10, 11]])] G垂直分割为3块: [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] G垂直不均等分割: [array([[0, 1, 2, 3], [4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])] |
微信赞赏
支付宝赞赏