首页 > 其他 > 详细

numpy的基本操作

时间:2021-05-16 01:02:43      阅读:30      评论:0      收藏:0      [点我收藏+]

numpy 操作

numpy 模块
import numpy as np
	- 使用array()创建一个一位数组
arr = np.array([1,2,3,4,5])
arr1 = np.array([[1,2,3],[4,5,6]])
- 数组和列表的区别是什么?
	- 数组中存储的数据元素类型必须是统一类型
	- 优先级
		- 字符串>浮点数>整数
np.array([[1,2,‘two‘],[4,5.5,6]])
# 使用plt创建
import matplotlib.pyplot as plt
img_arr = plt.imread(‘./img.jpg‘) #将图片数据进行读取,返回的是一个三维数组
# 将数组中的数据进行图像展示
plt.imshow(img_arr)
# 将数组中的每一个元素都减去100
plt.imshow(img_arr-100)
- 使用routines函数创建
	- zero()
	- ones()
	- linespace()
	- arange()
	- random系列
np.ones(shap=(4,5)) 
np.linspace(0,100,num=20)
np.arange(1,100,2)
np.random.randint(0,100,size=(3,4))
# 固定随机性
np.random.seed(23)
np.random.randint(1,100,size=(3,4))
# numpy 的常用属性
	- shape #反回的形状
	- ndim # 维度
	- size # 返回元素个数
	- dtype # 数组元素类型
##### 如何修改数组元素的数据类型
arr=np.array([1,2,3])
# 查看
arr.dtype
# 修改
arr.dtype = ‘int8‘

#############重点############
numpy 的索引和切片操作(重点)
	- 索引操作和列表同理
	- 切片操作
		- 切出前倆列数据
		- 切出前倆行数据
		- 切出前倆行的数据
		- 数组数据翻转
		- 练习:将一张图片上下左右进行翻转操作
		- 练习:将图片进行指定区域的裁剪
arr = np.random.randint(1,100,size=(5,7)) # size代表的是5行7列
# 切出前倆列数据
arr[0:2]
# 切出前倆列数据
arr[:,0:2] #[行,列]
# 切出前倆行前倆列
arr[0:2,0:2]
# 数组进行翻转
arr[::-1,:]
# 将数组行进行翻转
arr[:,::-1]
arr[::-1,::-1]

# 将图片进行左右翻转
plt.imshow(img_arr[:,::-1,:])
# 将图片上下翻转
plt.imshow(img_arr[::-1,:,:])
# 上下左右颜色都翻转
plt.imshow(img_arr[::-1,::-1,::-1])

####### 将图片进行裁剪
maji = plt.imread(‘./maji.jpg‘)
plt.imshoe(maji)
maji[50:390,90:380,:] # [行,列,颜色]

# 变形reshape
arr = np.random.randint(0,100,size=(3,4))
# 将二维数组变成一维数组
arr_1 = arr.reshape((12,))
# 将一维变成2维
arr_1.reshape((3,4))

# # #  # 级联操作
	- 将多个numpy数组进行横向或者纵向的拼接
	- axis 轴向的理解
		0:列
		1:行
	- 问题:
		- 级联的倆个数组维度一样,但是行列个数不一样会如何?

ar = np.random.randint(0,100,size=(3,4))
np.concatenate((ar,ar),axis=1) # axis=0是竖直方向 axis=1水平

# 实现图片的9宫格
ar3=np.concatenate((maji,maji,maji),axis=1)# 把三张图片横向放一起
ar4=np.concatenate((maji,maji,maji),axis=0)# 把三张图片竖直放一起

# 常用的聚合操作
	- sum,max,min,mean
arr.sum(axis=0) # 求的是行的值 
arr.sum(axis=1) # 求的是竖直的值 
arr.sum(axis=None) # 求的是所有值

## -- 常用的数学函数
	- NumPy提供了标准的三角函数:sin(),cos(),tan()
	- numpy.around(a,decimals)函数返回指定数字的四舍五入值
	参数说明:
		- a:数组
		- deecimals: 摄入的小数位数,默认值为0,如果为负,整数将四舍五入到小数点左侧的位置
	np.sin() # 正弦函数
	np.around(arr,decimals=-1) # decimals从小数点几位开始四舍五入负数表示的是小数点的左边,正数是右边
	
### 重点 常用的统计函数
 - numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小,最大值。
 numpy.ptp():计算数组中元素最大值与最小值的差(最大值-最小值)
 numpy.median()函数用于计算数组a中元素的中位数(中值)
 标准差std():标准差是一组数据平均值分散程度的一种度量
 	- 公式:std = sqrt(mean(x-x.mean())**2)
 	- 如果数组是[1,2,3,4],则其平均值为2.5.因此,差的平方是[2.25,0.25,0.25,2.25],并且其平均值的平方根除
 	- 既sqrt(5/4),结果为1.118033...
 	- 方差var(): 统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean(x-x.mean). 换句话说,标准差是方差的平方根。
 	方差公式:DX = E[(X-EX)^2] 
 	方差公式 : s^2=[(x1-x)^2 +...(xn-x)^2]/n  ===> 其中x就是总和除以个数,其中个数除以俩次。 方差越小,波动越小
 	标准差: 方差开根号
 	
 -- 机器学习 矩阵相关
 	-- Numpy 中包含了一个矩阵numpy.matlib,该模块的函数返回的是一个矩阵,而不是ndarray对象,一个的矩阵是一个由行列元素排列组成的矩形阵列。
 	-- Numpy.matlib.identity()函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素为1,除此以外全都是0.
 	-- 转置举证
 		-- .T
 	-- 矩阵相乘
 		-- numpy.dot(a,b,out=None)
 			a:ndarray 数组
 			b:ndarray 数组
 			 实例:
 			 	2 1  + 1 2 = 3 3
 				4 3	   1 0   5 3
              矩阵相加类似
              矩阵相乘以一个常数,就是所有位置乘以这个数
              2 * 2 1 = 4 2
              	  4 3	8 6
              矩阵乘以矩阵的时候,一切就变得那么的棒棒哒
              2 1 * 1 2 = 3 4
              4 3   1 0   7 8
              第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加(2*1+1*1),的到的结果就是上面的三(3),所以接下的操作你懂我也懂。(就是行乘列)
              公式:numpy.dot(a1,a2)
            -- 线性代数基于矩阵的推导
            	-- 此处我百度看了下对我好难,所以我学会了就不分享了。
    
   	
 	
	







numpy的基本操作

原文:https://www.cnblogs.com/thaimj1314520/p/14772570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!