当前位置: 首页 > news >正文

网站开发与维护的工作内容衡阳网站建设

网站开发与维护的工作内容,衡阳网站建设,无尺码精品产品,广州建筑公司实力排名Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包#xff0c;如数据分析工具pandas也是基于numpy构建的#xff0c;机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数…Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包如数据分析工具pandas也是基于numpy构建的机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数组属性的大小和形状(shape)如何从数组提取特定的项如何从现有的数组定义新数组多维数组的重构(reshaping)和扁平(flattening)如何通过numpy生成序列数(sequences)重复数(repetitions)和随机数(random)1.如何构建numpy数组构建numpy数组的方法很多比较常用的方法是用np.array函数对列表进行转化。# 通过列表创建一维数组import numpy as nplist1  [0,1,2,3,4]arr1d  np.array(list1)#打印数组和类型print(type(arr1d))arr1d[0 1 2 3 4]数组和列表最关键的区别是数组是基于向量化操作的列表不是我们在实际项目中处理的数据一般是矩阵结构对该数据以行向量或列向量的形式进行计算向量计算是基于数组实现的因此数组比列表的应用更广。函数可以应用到数组的每一项列表不行。比如不可以对列表的每一项数据都加2这是错误的。list1  2 # 错误可以对数组的某一项数据都加2# Add 2 to each element of arr1darr1d  2# array([2, 3, 4, 5, 6])另一个区别是已经定义的numpy数组不可以增加数组大小只能通过定义另一个数组来实现但是列表可以增加大小。然而Numpy有更多的优势让我们一起来发现。numpy可以通过列表中的列表来构建二维数组。# Create a 2d array from a list of listslist2  [[0,1,2], [3,4,5], [6,7,8]]arr2d  np.array(list2)arr2d# array([[0, 1, 2],# [3, 4, 5],# [6, 7, 8]])你也可以通过dtype参数指定数组的类型一些最常用的numpy类型是floatintboolstr和object。# Create a float 2d arrayarr2d_f  np.array(list2, dtypefloat)arr2d_f# array([[ 0., 1., 2.],# [ 3., 4., 5.],# [ 6., 7., 8.]])输出结果的小数点表示float类型你也可以通过 astype方法转换成不同的类型。# 转换成‘int’类型arr2d_f.astype(int)# array([[0, 1, 2],# [3, 4, 5],# [6, 7, 8]])# 先转换‘int’类型再转换‘str’类型arr2d_f.astype(int).astype(str)# array([[0, 1, 2],# [3, 4, 5],# [6, 7, 8]],# dtypeU21)另一个区别是数组要求所有项是同一个类型list没有这个限制。如果你想要一个数组包含不同类型设置‘dtype’为object。# 构建布尔类型数组arr2d_b  np.array([1, 0, 10], dtypebool)arr2d_b# array([ True, False, True], dtypebool)# 构建包含数值和字符串的数组arr1d_obj  np.array([1, a], dtypeobject)arr1d_obj# array([1, a], dtypeobject)最终使用 tolist()函数使数组转化为列表。# Convert an array back to a listarr1d_obj.tolist()# [1, a]总结数组和列表主要的区别数组支持向量化操作列表不支持数组不能改变长度列表可以数组的每一项都是同一类型list可以有多种类型同样长度的数组所占的空间小于列表2.如何观察数组属性的大小和形状(shape)一维数组由列表构建二维数组arr2d由列表的列表构建二维数组有行和列比如矩阵三维数组由嵌入了两个列表的列表构建。假设给定一个数组我们怎么去了解该数组的属性。数组的属性包括数组的维度(ndim)数组的形状(shape)数组的类型(dtype)数组的大小(size)数组元素的表示(通过索引)# 定义3行4列的二维数组list2  [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]]arr2  np.array(list2, dtypefloat)arr2# array([[ 1., 2., 3., 4.],# [ 3., 4., 5., 6.],# [ 5., 6., 7., 8.]])# 形状(shape)print(Shape: , arr2.shape)# 数组类型(dtype)print(Datatype: , arr2.dtype)# 数组大小(size)print(Size: , arr2.size)# 数组维度(ndim)print(Num Dimensions: , arr2.ndim)# 取数组第3行3列元素print(items of 3 line 3 column: , c[2,2])# Shape: (3, 4)# Datatype: float64# Size: 12# Num Dimensions: 2# items of 3 line 3 column: 73. 如何从数组提取特定的项数组的索引是从0开始计数的与list类似。numpy数组通过方括号的参数以选择特定的元素。# 选择矩阵的前两行两列arr2[:2, :2]list2[:2, :2] # 错误# array([[ 1., 2.],# [ 3., 4.]])numpy数组支持布尔类型的索引布尔型索引数组与过滤前(array-to-be-filtered)的数组大小相等布尔型数组只包含Ture和False变量Ture变量对应的数组索引位置保留了过滤前的值 。arr2# array([[ 1., 2., 3., 4.],# [ 3., 4., 5., 6.],# [ 5., 6., 7., 8.]])# 对数组每一个元素是否满足某一条件然后获得布尔类型的输出b  arr2  4b# array([[False, False, False, False],# [False, False, True, True],# [ True, True, True, True]], dtypebool)# 取布尔型数组保留的原始数组的值arr2[b]# array([ 5., 6., 5., 6., 7., 8.])3.1 如何反转数组# 反转数组的行arr2[::-1, ]# array([[ 5., 6., 7., 8.],# [ 3., 4., 5., 6.],# [ 1., 2., 3., 4.]])# Reverse the row and column positions# 反转数组的行和列arr2[::-1, ::-1]# array([[ 8., 7., 6., 5.],# [ 6., 5., 4., 3.],# [ 4., 3., 2., 1.]])3.2 如何处理数组的缺失值(missing)和无穷大(infinite)值缺失值可以用np.nan对象表示np.inf表示无穷大值下面用二维数组举例# 插入nan变量和inf变量arr2[1,1]  np.nan # not a numberarr2[1,2]  np.inf # infinitearr2# array([[ 1., 2., 3., 4.],# [ 3., nan, inf, 6.],# [ 5., 6., 7., 8.]])# 用-1代替nan值和inf值missing_bool  np.isnan(arr2) | np.isinf(arr2)arr2[missing_bool]  -1arr2# array([[ 1., 2., 3., 4.],# [ 3., -1., -1., 6.],# [ 5., 6., 7., 8.]])3.3 如何计算n维数组的平均值最小值和最大值# 平均值最大值最小值print(Mean value is: , arr2.mean())print(Max value is: , arr2.max())print(Min value is: , arr2.min())# Mean value is: 3.58333333333# Max value is: 8.0# Min value is: -1.0如果要求数组的行或列的最小值使用np.amin函数# Row wise and column wise min# 求数组行和列的最小值# axis0表示列1表示行print(Column wise minimum: , np.amin(arr2, axis0))print(Row wise minimum: , np.amin(arr2, axis1))# Column wise minimum: [ 1. -1. -1. 4.]# Row wise minimum: [ 1. -1. 5.]对数组的每个元素进行累加得到一维数组一维数组的大小与二维数组相同。# 累加np.cumsum(arr2)# array([ 1., 3., 6., 10., 13., 12., 11., 17., 22., 28., 35., 43.])4.如何从现有的数组定义新数组如果使用赋值运算符从父数组定义新数组新数组与父数组共占同一个内存空间如果改变新数组的值那么父数组也相应的改变。为了让新数组与父数组相互独立你需要使用copy()函数。所有父数组都使用copy()方法构建新数组。# Assign portion of arr2 to arr2a. Doesnt really create a new array.# 分配arr2数组给新数组arr2a下面方法并没有定新数组arr2a  arr2[:2,:2]arr2a[:1, :1]  100 # arr2相应位置也改变了arr2# array([[ 100., 2., 3., 4.],# [ 3., -1., -1., 6.],# [ 5., 6., 7., 8.]])# 赋值arr2数组的一部分给新数组arr2barr2b  arr2[:2, :2].copy()arr2b[:1, :1]  101 # arr2没有改变arr2# array([[ 100., 2., 3., 4.],# [ 3., -1., -1., 6.],# [ 5., 6., 7., 8.]])5.多维数组的重构(reshaping)和扁平(flattening)重构(reshaping)是改变了数组项的排列即改变了数组的形状未改变数组的维数。扁平(flattening)是对多维数组转化为一维数组。# 3x4数组重构为4x3数组arr2.reshape(4, 3)# array([[ 100., 2., 3.],# [ 4., 3., -1.],# [ -1., 6., 5.],# [ 6., 7., 8.]])5.1 flatten()和ravel()的区别数组的扁平化有两种常用的方法flatten()和ravel() 。flatten处理后的数组是父数组的引用因此新数组的任何变化也会改变父数组因其未用复制的方式构建数组内存使用效率高ravel通过复制的方式构建新数组。# flatten方法arr2.flatten()# array([ 100., 2., 3., 4., 3., -1., -1., 6., 5., 6., 7., 8.])# flatten方法b1  arr2.flatten()b1[0]  100 # 改变b1的值并未影响arr2arr2# array([[ 100., 2., 3., 4.],# [ 3., -1., -1., 6.],# [ 5., 6., 7., 8.]])# ravel方法b2  arr2.ravel()b2[0]  101 # 改变b2值相应的改变了arr2值arr2# array([[ 101., 2., 3., 4.],# [ 3., -1., -1., 6.],# [ 5., 6., 7., 8.]])6.如何通过numpy生成序列数(sequences)重复数(repetitions)和随机数(random)np.arrange函数手动生成指定数目的序列数与ndarray作用一样。# 默认下限为0print(np.arange(5))# 0 to 9默认步数为1print(np.arange(0, 10))# 递增步数2print(np.arange(0, 10, 2))# 降序print(np.arange(10, 0, -1))# [0 1 2 3 4]# [0 1 2 3 4 5 6 7 8 9]# [0 2 4 6 8]# [10 9 8 7 6 5 4 3 2 1]上例是通过np.arrange设置初始位置和结束位置来生成序列数如果我们设置数组的元素个数那么可以自动计算数组的递增值。如构建1到50的数组数组有10个元素使用np.linspace总动计算数组的递增值。# 起始位置和结束位置分别为1和50np.linspace(start1, stop50, num10, dtypeint)# array([ 1, 6, 11, 17, 22, 28, 33, 39, 44, 50])我们注意到上面例子的递增值并不相等有5和6两个值原因是计算递增值采用了四舍五入的算法(rounding)。与np.linspace类似np.logspace以对数尺度的方式增长。# 设置数组的精度为小数点后两位np.set_printoptions(precision2)# 起点为 10^1 and 终点为 10^50数组元素个数10以10为底数np.logspace(start1, stop50, num10, base10)# array([ 1.00e01, 2.78e06, 7.74e11, 2.15e17, 5.99e22,# 1.67e28, 4.64e33, 1.29e39, 3.59e44, 1.00e50])初始化数组的元素全为1或全为0。np.zeros([2,2])# array([[ 0., 0.],# [ 0., 0.]])np.ones([2,2])# array([[ 1., 1.],# [ 1., 1.]])6.1如何构建重复的序列数np.tile重复整个的数组或列表n次np.repeat重复数组每一项n次。a  [1,2,3]# 重复数组a两次print(Tile: , np.tile(a, 2))# 重复数组a每项两次print(Repeat: , np.repeat(a, 2))# Tile: [1 2 3 1 2 3]# Repeat: [1 1 2 2 3 3]6.2 如何生存随机数random模块包含的函数可以生成任一数组形状的随机数和统计分布。# 生成2行2列的[0,1)的随机数print(np.random.rand(2,2))# 生成均值为0方差为1的2行2列的正态分布值print(np.random.randn(2,2))# 生成[0,10)的2行2列的随机整数print(np.random.randint(0, 10, size[2,2]))# 生成一个[0,1)的随机数print(np.random.random())# 生成[0,1)的2行2列的随机数print(np.random.random(size[2,2]))# 从给定的列表等概率抽样10次print(np.random.choice([a, e, i, o, u], size10))# 从给定的列表和对应的概率分布抽样10次print(np.random.choice([a, e, i, o, u], size10, p[0.3, .1, 0.1, 0.4, 0.1])) # picks more os# [[ 0.84 0.7 ]# [ 0.52 0.8 ]]# [[-0.06 -1.55]# [ 0.47 -0.04]]# [[4 0]# [8 7]]# 0.08737272424956832# [[ 0.45 0.78]# [ 0.03 0.74]]# [i a e e a u o e i u]# [o a e a a o o o a o]6.3 如何得到数组独特(unique)的项和个数(counts)np.unique函数去除数组中重复的元素设置return_counts参数为True得到数组每一项的个数。# 定义范围为[0,10)个数为10的随机整数数组np.random.seed(100)arr_rand  np.random.randint(0, 10, size10)print(arr_rand)# [8 8 3 7 7 0 4 2 5 2]# 得到数组独特的项和相应的个数uniqs, counts  np.unique(arr_rand, return_countsTrue)print(Unique items : , uniqs)print(Counts : , counts)# Unique items : [0 2 3 4 5 7 8]# Counts : [1 2 1 1 1 2 2]对numpy的基本用法不太熟悉的伙伴重点可以看一下了
http://www.pierceye.com/news/194029/

相关文章:

  • 东莞网站制作公司报价企业定制
  • 创同盟做网站生成拼贴的网站
  • 网站备案号查电话号码商场网站开发
  • 手机网站建站教育模板下载泰州公司注册
  • 如何做商业网站推广西安市城乡建设管理局网站的公示栏
  • 上海做兼职哪个网站腾讯企业邮箱域名是什么
  • 霸州网站制作棋牌网站建设源码
  • 茶叶网站制作模板网页设计在安阳工资多少
  • 网站建设项目验收方案自己做捕鱼网站能不能挣钱
  • 微信网页网站怎么做我为群众办实事实践活动
  • 建设银行发卡银行网站福州 网站设计
  • 网站备案号码舟山高端网站建设
  • 买奢侈品代工厂做的产品的网站名建立网站 英语怎么说
  • 网站访问者qq计算机等级培训机构
  • 可以让外国人做问卷调查的网站济南优化seo网站建设公司
  • odoo做网站创建企业需要什么条件
  • 山西省旅游网站建设分析wordpress 个人介绍
  • 山东高级网站建设赚钱
  • 做网站大概要多少钱新建网站的外链多久生效
  • 天河区建设网站品牌网站建设小8蝌蚪
  • 深圳市企业网站seo点击软件小程序游戏开发公司
  • 南宁企业网站设计公怎么进wordpress
  • 商务网站建设一万字做视频剪辑接私活的网站
  • 网站开发绪论phpstudy建wordpress
  • 网站建设的基本流程有哪些wordpress产品页布局
  • 写过太原的网站免费漫画大全免费版
  • 毕业设计做系统好还是网站好冠县网站建设公司
  • 网站管理制度建设开发一个网站需要多少时间
  • 高校网站建设说明书微信公众号涨粉 网站
  • 深圳网站建设公司哪里好中国施工企业管理协会官网