python图像处理基础

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]);   #取第一列元素
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值