首先,我们需要导入包文件
一、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]]]