python 学习笔记之numpy
文章目录
1、矩阵的转置
注意 :一维行数组的转置不能够成功,需要加上**【】**。
# 注意不带括号,所以它的转置不能够成功
x = np.array([1,2,3,4])
x.T
Out[1]: array([1, 2, 3, 4])
# 带两个括号进行转置成功
y = np.array([[1,2,3,4]])
y.T
Out[2]:
array([[1],
[2],
[3],
[4]])
2、矩阵的点积(multiply、*)、内积(np.dot())
2.1 矩阵的点积(multiply 实现)
点积进行两个矩阵进行对应元素的相乘。
# 第一个例子
a = np.array([[1,2],[3,4]])
b = np.array([5,6])
np.multiply(a,b) # 对应于行的相乘即 [[1*5,2*6],[3*5,4*6]],相当于自动的广播,自动补全一行
Out[9]:
array([[ 5, 12],
[15, 24]])
# 第二个例子
a_1 = np.array([[1,2],[3,4]])
b_1 = np.array([[5],[6]])
np.multiply(a_1,b_1) # 对应于行的相乘即:[[1*5,2*5],[3*6,4*6]]
Out[12]:
array([[ 5, 10],
[18, 24]])
2.2 矩阵的点积( “*” 实现)
a*b 的实现与 np.multiply(a,b) 一样。
2.3 矩阵的内积( np.dot()、@)
np.dot(a,b) 和 a@b 的效果一样。
注意当矩阵为一维矩阵时,计算的结果是对应元素相乘,再求和,不分是否符合 1* n 与 n * 1,即使是 1* n 和 1* n也能得到同样的结果。
# 示例一
m = np.array([1,2,3])
np.dot(m,m)
Out[16]: 14
# 示例二
n = np.array([[1,2,3],
[4,5,6]])
p = np.array([[1,2],
[3,4],
[5,6]])
np.dot(n,p)
Out[20]:
array([[22, 28],
[49, 64]])
3. Numpy中数组的各行,各列的求和,平均值,最大值,最小值,最大最小值差,标准差,方差等的计算
针对数组n 进行一些操作。
import numpy as np
n = np.arange(25).reshape(5,5)
print(n)
[[ 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]]
3.1 各行列 进行求和np.sum()
进行求和,所有元素的相加:
print(np.sum(n))
300
进行求和,对应每列的值相加:其中就是axis=0
print(np.sum(n,axis=0))
[50 55 60 65 70]
进行求和,对应每行的值相加:其中就是axis=1
print(np.sum(n,axis=1))
[ 10 35 60 85 110]
3.2 各行列 进行求平均值 np.mean()
进行求平均,所有元素的相加求平均:
print(np.mean(n))
12.0
进行求平均,对应每列的元素相加求平均:其中就是axis=0
print(np.mean(n,axis=0))
[10. 11. 12. 13. 14.]
进行求平均,对应每行的元素相加求平均:其中就是axis=1
print(np.mean(n,axis=1))
[ 2. 7. 12. 17. 22.]
3.3 各行列 进行求最大值或最小值 np.max()或np.min()
进行求最大值或最小值 ,所有元素的最大值或最小值 :
print(np.max(n))
24
print(np.min(n))
0
进行求最大值或最小值 ,按照每列元素进行求最大与最小值 :其中就是axis=0
print(np.max(n,axis=0))
[20 21 22 23 24]
print(np.min(n,axis=0))
[0 1 2 3 4]
进行求最大值或最小值 ,按照每行元素进行求最大与最小值 :其中就是axis=1
print(np.max(n,axis=1))
[ 4 9 14 19 24]
print(np.min(n,axis=1))
[ 0 5 10 15 20]
3.3 各行列 进行求最大值与最小值 之差 np.ptp()
进行求最大与最小值的差,整体最大与最小值的差:
print(np.ptp(n))
24
进行求最大与最小值的差,按照每列进行求最大与最小值的差:其中就是axis=0
print(np.ptp(n,axis=0))
[20 20 20 20 20]
进行求最大与最小值的差,按照每行进行求最大与最小值的差:其中就是axis=1
print(np.ptp(n,axis=1))
[4 4 4 4 4]
3.4 各行列 进行求标准差和方差 np.std(),np.var()
进行求标准差和方差,整体标准差和方差:
print(np.std(n))
7.211102550927978
print(np.var(n))
52.0
进行求标准差和方差,按照每列进行求解标准差和方差:其中就是axis=0
print(np.std(n,axis=0))
[7.07106781 7.07106781 7.07106781 7.07106781 7.07106781]
print(np.var(n,axis=0))
[50. 50. 50. 50. 50.]
进行求标准差和方差,按照每行进行求解标准差和方差:其中就是axis=1
print(np.std(n,axis=1))
[1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]
print(np.var(n,axis=1))
[2. 2. 2. 2. 2.]
3.5 多维数组的参数axis
- 2维数组时,参数axis=0,代表对列上的元素进行操作;axis=1时,代表对行上的元素进行操作。(可能与官方文档的解释不太一样,但是最终的效果是一样的)
- 当为多维数组时:
b = np.arange(24).reshape(2, 3, 4)
print(b.shape)
print(b)
(2, 3, 4)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
当axis=0时,结果为3x4的数组: 即最外层2维上对应元素进行相加的结果
print(b.sum(axis=0))
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
当axis=1时,结果维2x4的数组: 即把中间的第二层进行压缩没了
print(b.sum(axis=1))
[[12 15 18 21]
[48 51 54 57]]
当axis=2时,结果维2x3的数组: 即把最外层压缩没了
print(b.sum(axis=2))
[[ 6 22 38]
[54 70 86]]
3.6 求矩阵的最大值或者最小值所在的位置
np.argmax() 与 np.argmin() 来进行实现