前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python进阶:NumPy

Python进阶:NumPy

作者头像
披头
发布2019-12-26 09:43:55
9610
发布2019-12-26 09:43:55
举报
文章被收录于专栏:datartisandatartisan

Python本身没有处理矩阵的数据类型,因此需要使用附件的函数库。

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。这种扩展库可以用来存储和处理大型多维矩阵,比Python自身的列表结构要高效很多。

NumPy安装

cmd命令行输入如下命令:

C:\Users\Administrator>pip install numpyRequirement already satisfied: numpy in d:\anaconda3\lib\site-packages (1.15.4)# 我用的anaconda已经集成安装了numpy

NumPy的基本使用

  • numpy导入及数组创建
  • 通过shape属性获取数组的大小
  • 修改数组的shape属性

可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。

下面的例子将数组c的shape改为(4, 3)。注意:从(3, 4)改为(4, 3)并不是对数组进行转置,而只是改变每个轴的大小,数组元素在内存中的位置并没有改变。

当某个轴的元素为 -1 时,将根据数组元素的个数自动计算此轴的长度,因此下面的代码将c的shape改为了(2, 6)。

此外,使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变。

  • 数组的类型

数组元素的类型可以通过dtype属性获得,上面例子中的参数序列的元素都是整数,因此所创建的数组的元素类型也是整数,并且是32位的长整型。

可以通过dtype参数在创建时指定元素类型。

可以发现,现在数组元素都是浮点类型。

  • 其他创建数组的方式

前面的例子都是先创建一个Python序列,然后通过array函数将其转换为数组,这样做效率较低,NumPy提供 了很多专门创建数组的函数。

1) arange函数类似于Python的range函数,通过指定开始值,终止值和步长来创建一维数组,需要注意的是数组不包含终止值。

2) linspace函数通过指定开始值、终止值和元素个数来创建一维数组,可以通过endpoint关键字来指定是否包含终止值,默认包含终止值。

3) logspace函数和linspace类似,但是他创建的是等比数列,下面的例子显示从2到64有个元素的等比数列。默认开始值和结束值都是10的幂,可以用base = n 修改。

  • 数组元素的存取

数组元组的存取方法与Python的标准方法相同。

  • ufunc运算

ufunc是一种能够对数组的每个元素进行操作的函数,numpy内置了许多ufunc函数都是在C语言级别实现的,因此,他们的运算速度非常快。请看例子:

可以发现,numpy.sin比math.sin快很多。

  • 矩阵的运算

矩阵的运算可以使用dot函数计算。对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是点积。

  • 文件存取

numpy提供多种文件操作函数以方便用户存取数组内容。文件存取的格式分为两类,二进制和文本。二进制格式文件又分为numpy专用的格式化二进制类型和无格式化的二进制类型。

可以使用numpy.savetxt和numpy.loadtxt读写一维和二维数组。

import numpy as np #生成数据 x = np.arange(1,10,1).reshape(3,-1)   #保存数据 np.savetxt('test.txt', x) # 默认按照'%.18e'格式保存数据(18个0科学计数法),以空格分割np.savetxt('test1.txt', x,fmt='%1.4e') np.savetxt('test2.txt', x, delimiter=',') np.savetxt('test3.txt', x,newline='a') np.savetxt('test4.txt', x,delimiter=',',newline='a') np.savetxt('test5.txt', x,delimiter=',',header='abc') np.savetxt('test6.txt', x,delimiter=',',footer='abc') 

在jupyter nootbook中输入pwd查看当前目录,查看生成的7个文件内容差异。

如需查看文件内容,可以使用下面的代码:(保存格式不同,查看的代码也有差异)

np.loadtxt("test2.txt",delimiter=',')
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档