首先,我们需要导入包文件
一、numpy中的一般语法 1 2 3 4 5 6 7 8 9 10 11 12 data_1 = np.matrix('3 4 5;7 8 9' ) print(data_1) print("矩阵的逆:" ) data_2 = data_1.I print(data_2) print("矩阵的转置:" ) data_3 = data_1.T print(data_3) print("矩阵的秩:" ) data_4 = np.linalg.matrix_rank(data_1) print(data_4)
[[3 4 5]
[7 8 9]]
矩阵的逆:
[[-1.08333333 0.58333333]
[-0.08333333 0.08333333]
[ 0.91666667 -0.41666667]]
矩阵的转置:
[[3 7]
[4 8]
[5 9]]
矩阵的秩:
2
2
二、数组的创建
创建二维数组 这里强调:使用matrix只能创建二维矩阵,而是用非matrix方法可以创建高维矩阵
1 2 3 4 5 6 arr_1 = np.matrix(np.zeros((3 , 3 ))) print(arr_1) arr_1 = np.zeros((3 , 3 )) print(arr_1)
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
1 2 3 4 5 6 arr_2 = np.matrix(np.ones((3 , 3 ))) print(arr_2) arr_2 = np.ones((3 , 3 )) print(arr_2)
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
1 2 3 arr_3 = np.matrix(np.random.rand(3 , 4 )) arr_3
matrix([[0.48890396, 0.09218043, 0.38339213, 0.61843015],
[0.35092127, 0.08485116, 0.84651857, 0.4481831 ],
[0.88727766, 0.56471182, 0.49473952, 0.69027512]])
1 2 3 arr_4 = np.matrix(np.random.randint(5 , 10 , size=(3 , 4 ))) arr_4
matrix([[7, 7, 7, 5],
[6, 5, 8, 5],
[5, 6, 7, 6]])
1 2 3 4 new_list = [i for i in range(3 , 7 )] arr_5 = np.matrix(np.diag(new_list)) arr_5
matrix([[3, 0, 0, 0],
[0, 4, 0, 0],
[0, 0, 5, 0],
[0, 0, 0, 6]])
1 2 3 arr_6 = np.eye(3 ) arr_6
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
1 2 3 4 print(arr_4) arr_7 = arr_4.reshape(4 , 3 ) arr_7
[[7 7 7 5]
[6 5 8 5]
[5 6 7 6]]
matrix([[7, 7, 7],
[5, 6, 5],
[8, 5, 5],
[6, 7, 6]])
高维数组
1 2 3 4 arr_8 = np.arange(24 ).reshape(2 , 3 , 4 ) print(arr_8) print("数组维度:" +str(arr_8.ndim))
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
数组维度:3
三、numpy的索引和切片 1 2 3 print(arr_8) print("单独获取到一个值" ) print(arr_8[0 ,0 ,3 ])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
单独获取到一个值
3
1 2 3 print(arr_8) print("获取到深度为0的所有值" ) print(arr_8[0 ,:,:])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
获取到深度为0的所有值
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
1 2 3 print(arr_8) print("获取到深度为0的前两行的值" ) print(arr_8[0 ,:2 ,:])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
获取到深度为0的前两行的值
[[0 1 2 3]
[4 5 6 7]]
1 2 3 print(arr_8) print("获取到深度为0的前两行后两列的值" ) print(arr_8[0 ,:2 ,-2 :])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
获取到深度为0的前两行后两列的值
[[2 3]
[6 7]]
1 2 3 4 5 6 7 8 print(arr_8) print("获取到深度为0的前两行后两列的值并替换为-2" ) print("获取到深度为0的前两行后两列的值" ) print(arr_8[0 ,:2 ,-2 :]) print("替换为-2" ) arr_8[0 ,:2 ,-2 :] = -2 print("原来数组" ) print(arr_8)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
获取到深度为0的前两行后两列的值并替换为-2
获取到深度为0的前两行后两列的值
[[2 3]
[6 7]]
替换为-2
原来数组
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
四、numpy的合并功能 1. 在第一轴合并
2. 在第二轴合并
3. 在第三轴合并
4. 在任意轴合并
1 2 3 4 5 6 7 print("合并前的arr_8\n" +str(arr_8)) temp_1 = arr_8 temp_2 = arr_8 temp = np.vstack((temp_1, temp_2)) print("两个arr_8合并后\n" +str(temp))
合并前的arr_8
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
两个arr_8合并后
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
1 2 3 4 5 6 7 print("合并前的arr_8\n" +str(arr_8)) temp_1 = arr_8 temp_2 = arr_8 temp = np.hstack((temp_1, temp_2)) print("两个arr_8合并后\n" +str(temp))
合并前的arr_8
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
两个arr_8合并后
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]
[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
1 2 3 4 5 6 7 print("合并前的arr_8\n" +str(arr_8)) temp_1 = arr_8 temp_2 = arr_8 temp = np.dstack((temp_1, temp_2)) print("两个arr_8合并后\n" +str(temp))
合并前的arr_8
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
两个arr_8合并后
[[[ 0 1 -2 -2 0 1 -2 -2]
[ 4 5 -2 -2 4 5 -2 -2]
[ 8 9 10 11 8 9 10 11]]
[[12 13 14 15 12 13 14 15]
[16 17 18 19 16 17 18 19]
[20 21 22 23 20 21 22 23]]]
1 2 3 4 5 6 7 8 print("合并前的arr_8\n" +str(arr_8)) temp_1 = arr_8 temp_2 = arr_8 temp = np.concatenate((arr_8, arr_8), axis=2 ) print("两个arr_8合并后\n" +str(temp))
合并前的arr_8
[[[ 0 1 -2 -2]
[ 4 5 -2 -2]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
两个arr_8合并后
[[[ 0 1 -2 -2 0 1 -2 -2]
[ 4 5 -2 -2 4 5 -2 -2]
[ 8 9 10 11 8 9 10 11]]
[[12 13 14 15 12 13 14 15]
[16 17 18 19 16 17 18 19]
[20 21 22 23 20 21 22 23]]]