【Python模块】- Numpy在AI中的应用

本文介绍了Numpy在人工智能领域的应用,包括生成和操作随机数数组,执行线性代数运算,读写文件,以及计算激活函数如Sigmoid和ReLU。此外,还详细阐述了如何使用Numpy进行图像的翻转、裁剪和亮度调整,展示了Numpy在图像处理中的实用技巧。
摘要由CSDN通过智能技术生成

1. 随机数(数组)操作

生成随机数

numpy.random.seed(10)

#均匀分布
numpy.random.rand(10,10)          #创建指定形状(示例为10行10列)的数组(范围在0-1之间)
numpy.random.uniform(0,100)		  #创建一个指定范围的数
numpy.random.randint(0,100)		  #创建一个指定范围内的整数

#正态分布
numpy.random.normal(1.75,0.1,(2,3))			#给定均值/标准差/维度的正态分布
numpy.random.randn(10,10)					#指定形状(10行10列)的标准正态分布

打乱数组中的元素

a = numpy.array([1,2,3,4,5])
numpy.random.shuffle(a)
print(a) 

2. 线性代数

函数描述
dot两个数组的点积,即元素对应相乘。
vdot两个向量的点积
inner两个数组的内积
matmul两个数组的矩阵积
determinant数组的行列式
solve求解线性矩阵方程
inv计算矩阵的乘法逆矩阵

其中最常用的是 dot

a = numpy.array([[1,2],[4,5]])
b = numpy.array([[7,8],[7,8]])
c = numpy.dot(a,b)
print(c)

请添加图片描述

3. Numpy IO

读取文本文件

numpy.fromfile('f1.txt',seq=' ')		#seq表示分隔符

将数组保存成二进制文件

numpy.save('f1.npy',a)					#a为数组

从二进制文件读取数组

b = numpy.load('f1.npy')				

check = (a == b).all()				#检查a和b数组是否一样
print(cjeck)

4. 计算激活函数

激活函数(Activation functions)将非线性特性引入到我们的网络中。在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

Sigmoid 函数

在这里插入图片描述

ReLU 函数

在这里插入图片描述

绘图参考

import numpy as np 
from matplotlib import pyplot as plt 
import matplotlib

x = np.arange(-10,10,0.1)
s = 1.0/(1+np.exp(-x))
plt.title("Sigmoid")  
plt1 = plt.plot(x,s)
p1 = plt.show(plt1)
print(p1)

n = np.arange(-10,10,0.1)		
y = np.clip(n,0,None)				#0表示最小值,None表示最大值
plt.title("ReLU") 
plt.plot(n,y)
plt.show()

在这里插入图片描述

5. 图像翻转、裁剪、亮度调整

图像是由像素点构成的矩阵,其数值可以用 ndarray

RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色

下面的操作,其实质上都是将 image 转换为 np.array,然后再对其中的元素进行操作,例如元素位置的变换,元素值的变化,数组的 size 的变化等

翻转

在对图片进行翻转的时候,其实是运用了 Python 的切片

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

image = Image.open('image/test.webp')
image = np.array(image)                 #图片是三维的,将图片的高度,宽度,RGB输出
#print(image)
print(image.shape)                      #输出的3表示RGB三个通道:红绿篮
plt.imshow(image)

请添加图片描述

垂直方向翻转

image2 = image[::-1,:,:]				#-1表示步长
plt.imshow(image2)

请添加图片描述

水平方向翻转

image3 = image[:,::-1,:]
plt.imshow(image3)

请添加图片描述

将RGB进行调换

image4 = image[:,:,::-1]
plt.imshow(image4)

请添加图片描述

裁剪

高度方向

H = image.shape[0]      # 取图片的高度值
H1 = H//3
H2 = H*2
image5 = image[H1:H2,:,:]
plt.imshow(image5)

请添加图片描述

宽度方向

W = image.shape[1]     
W1 = W//2
W2 = W
image6 = image[:,W1:W2,:]
plt.imshow(image6)

请添加图片描述

亮度调整

亮度变暗

image7 = image * 0.5
plt.imshow(image7.astype('uint8'))

请添加图片描述

变亮

image8 = image * 1.3
image8 = np.clip(image8,0,255)
plt.imshow(image8.astype('uint8'))

请添加图片描述

下采样

高度方向没隔一行取像素点

image9 = image[::2,:,:]
plt.imshow(image9)

请添加图片描述

宽度方向每隔一列取像素点

image10 = image[:,::2,:]
plt.imshow(image10)

请添加图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Buffedon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值