Numpy的使用(2)
1.维度axis
对于二维矩阵,(axis = 0)时指的是列,(axis = 1)时指的是行;
对于三维矩阵,(axis = 1)时指的是列,(axis = 2)时指的是行;
之后就以此类推。
matrix1 = np.array([
[1,3,6,45],
[8,5,6,99],
[4,1,6,4]
])
#打印每一列的和:
print(matrix1.sum(axis=0))
#打印每一行的和:
print(matrix1.sum(axis=1))
#打印每一列的最小值:
print(matrix1.min(axis=0))
#打印每一行的最大值:
print(matrix1.max(axis=1))
[ 13 9 18 148]
[ 55 118 15]
[1 1 6 4]
[45 99 6]
2.矩阵相关计算
2.1矩阵相乘
1.首先创建2个矩阵:
a = np.arange(6).reshape(2,-1)
print(a)
b = np.linspace(5,30,6).reshape(2,-1)
print(b)
[[0 1 2]
[3 4 5]]
[[ 5. 10. 15.]
[20. 25. 30.]]
2.矩阵对应位置相乘:
#矩阵对应位置相乘:
print(a*b)
[[ 0. 10. 30.]
[ 60. 100. 150.]]
3.矩阵乘法(内积):
#将矩阵b转置
b = b.T
print(b)
print(b.shape)
[[ 5. 20.]
[10. 25.]
[15. 30.]]
(3, 2) #3行2列
#矩阵a和b相乘
print(a.dot(b))
# print(np.dot(a,b))
[[ 40. 85.]
[130. 310.]]
2.2矩阵复制
(1) 使用"="
a = np.floor(np.linspace(1,35,6)).reshape(2,-1)
print(a)
b = a
print(b)
print(b is a)
[[ 1. 7. 14.]
[21. 28. 35.]]
[[ 1. 7. 14.]
[21. 28. 35.]]
True
b[1,2] = 1000
print(b)
print(a)
[[ 1. 7. 14.]
[ 21. 28. 1000.]]
[[ 1. 7. 14.]
[ 21. 28. 1000.]]
(2)使用 np.copy
c = np.copy(a)
print(c)
print(c is a)
[[ 1. 7. 14.]
[ 21. 28. 1000.]]
False
c[1,2] = 999
print(c)
print(a)
[[ 1. 7. 14.]
[ 21. 28. 999.]]
[[ 1. 7. 14.]
[ 21. 28. 1000.]]
第一种方法:矩阵b 和 矩阵a指向同一个矩阵;
第二种方法:矩阵c 和 矩阵a指向不同矩阵。
3.列表相关操作
3.1 随机排列序列
a = np.arange(10)
np.random.shuffle(a)
print(a)
[9 3 0 8 4 5 7 2 1 6]
3.2 排序
a = np.sort(a)
print(a)
[0 1 2 3 4 5 6 7 8 9]
3.3 列表内小数操作
x = np.linspace(1,99,14)
#取小数点后3位
a = x.round(decimals=3)
#取小数点后1位
b = x.round(decimals=1)
print(x)
print(a)
print(b)
注意,round对list无法操作
x = [1.22, 3.66, 9.66,8.444, 8.22222]
x = x.round(x,1)
print(x)
此时需要将列表array下:
x = [1.22, 3.66, 9.66,8.444, 8.22222]
#x = x.round(x,1)
x = np.array(x)
#取小数点后1位
x = x.round(1)
print(x)
[1.2 3.7 9.7 8.4 8.2]