numpy初学
一.矩阵的创建
1.给定数值创建
x=np.array([1,2,3])
print(x);
# 结果
[1 2 3]
2.产生随机数
#arange
d=np.arange(2,10); #产生从2-10的数 左闭右开
print(d);
#结果
[2 3 4 5 6 7 8 9]
l=np.arange(2,10,1.5); # 步数1.5
print(l);
# 结果
[2. 3.5 5. 6.5 8. 9.5]
m=np.linspace(0,10,11);
print(m);
#结果
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
3.创建一个全0矩阵
w=np.zeros((2,3),dtype=int); # 形式是两行三列 ,类型是int
print(w);
# 结果
[[0 0 0]
[0 0 0]]
4.创建一个全1的矩阵
t=np.ones((3,3),dtype=np.float32);
print(t);
# 结果
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
5.创建一个单位矩阵
# 第一种方法
A=np.eye(3);
print(A);
# 结果
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
# 第二种方法
B=np.identity(5);
print(B);
#结果
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
6.创建一个随机数值的矩阵
C=np.random.randint(1,101,(5,5),dtype=int);
print(C);
# 结果
[[81 84 67 55 72]
[28 26 28 83 41]
[72 2 98 29 10]
[41 17 18 90 58]
[40 30 78 97 70]]
二.矩阵的变换
1.reshape变换
P=np.ones((3,3),dtype=int);
print(P);
Q=P.reshape((1,9)); # 变换完之后还是一个二维数组
print(Q);
# 结果
P:[[1 1 1]
[1 1 1]
[1 1 1]]
Q:[[1 1 1 1 1 1 1 1 1]]
2.多维数组展成一维
# 1.flatten变换
T=P.flatten() # 将高维数组展开成一个一维数组 复制
print(T);
#结果
[1 1 1 1 1 1 1 1 1]
# 2.ravel变换
Y=P.ravel() # 将高维数组展开成一维数组 引用
print(Y);
# 结果
[1 1 1 1 1 1 1 1 1]
3.矩阵的转置
E=np.random.randint(1,11,(3,3),dtype=int);
E_T1=E.T;
print(E_T1);
E_T2=E.transpose();
print(E_T2);
# 结果都一样为
[[ 4 3 4]
[ 3 10 3]
[ 7 6 6]]
4.矩阵的堆叠
E2=np.hstack([P,E]); # 水平拼接两个矩阵
print(E2);
# 结果
[[ 1 1 1 4 3 7]
[ 1 1 1 3 10 6]
[ 1 1 1 4 3 6]]
print(np.vstack([P,E])); # 竖直拼接两个矩阵
#结果
[[ 1 1 1]
[ 1 1 1]
[ 1 1 1]
[ 4 3 7]
[ 3 10 6]
[ 4 3 6]]
三.矩阵相关的运算
1.最大值、最小值、平均值
#1.
print("max:",E.max());
print("min:",E.min());
print("mean:",E.mean());
#2.
print("max:",np.max(E));
print("min:",np.min(E));
print("mean:",np.mean(E));
# 3.每一行的最大值,最小值,平均值
print("每一行的最大值:",E.max(axis=1));
#结果
max: 10
min: 3
mean: 5.111111111111111
max: 10
min: 3
mean: 5.111111111111111
每一行的最大值: [ 7 10 6]
最大值、最小值和平均值都是这一个矩阵中所有元素之间的比较
2.矩阵的简单加减乘除
A1=np.random.randint(1,10,(3,3));
A2=np.random.randint(3,18,(3,3));
print(A1);
print(A2);
print(A1-A2);
print(A1+A2);
# 结果
A1:[[9 7 4]
[7 4 6]
[9 3 4]]
A2:[[ 9 8 17]
[17 8 11]
[ 7 11 10]]
A1-A2:[[ 0 -1 -13]
[-10 -4 -5]
[ 2 -8 -6]]
A1+A2:[[18 15 21]
[24 12 17]
[16 14 14]]
3.n次方
print(np.power(A1,2.5)); #对每一个元素都平方运算
print(np.sqrt(A1)); # 开二次根号
4.对数运算
print(np.log(A1)); # 默认是底数为1
print(np.log2(A1));
print(np.log10(A1)); # 通常为了防止出现0,操作时加1
5.矩阵和向量的乘法
X=np.array([1,2,3]);
Y=np.ones((3,3));
print(X*Y); # 直接相乘时,它会把向量复制成3*3的矩阵,然后对应元素相乘
print(X @ Y); #正常的矩阵和向量的乘法运算
print(X.dot(Y));
#结果
[[1. 2. 3.]
[1. 2. 3.]
[1. 2. 3.]] #第一个输出
[6. 6. 6.] #第二个输出
[6. 6. 6.] #第三个输出
6.元素的获取
Y1=X@Y;
print(Y1[0:]); #取第一行元素
print(Y1[:1]); #取第一列元素