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)