入门numpy(上)【解读numpy官方文档】 |
您所在的位置:网站首页 › numpy使用心得 › 入门numpy(上)【解读numpy官方文档】 |
前言 之前连载了pandas,pandas作为python做数据分析的一大利器,相信大家都不陌生。 当然连载部分作为入门是够了,具体提升还要大家多看看官方文档详细内容和做具体项目案例 之后我也会出一些pandas的数据分析实战案例分享给大家。 在询问了大家的意见和建议(怎么说的这么官方,不是我的风格啊)之后 我决定解读一下numpy的官方文档(入门部分) 让大家能够快速上手numpy 首先,我们看看官方是怎么介绍numpy的: ''' NumPy是使用Python进行科学计算的基础软件包。 它包含以下内容: (1)一个强大的N维数组对象 (2)复杂(广播)功能 (3)用于集成C / C ++和Fortran代码的工具 (4)非常有用的线性代数,傅里叶变换和随机数操作 (5)除了其明显的科学用途,NumPy也可以用作通用数据的高效多维容器。 可以定义任意数据类型。 这使NumPy能够无缝地,快速地与各种数据库集成。 ''' 可能大家对"广播"一词不太了解,广播的意思可以这样理解,当我有两个维度不一样的array(数组)运算时,我可以用低维的数组复制成高维数组参与运算(因为运算要符合一定结构) numpy官方网站:http://www.numpy.org/ 开始numpy之旅如果你是一个python初学者,我不建议你直接去python官网下载python3.X或是python2.7版本 我推荐你直接去anaconda官网下载对应版本的anaconda(建议下载最新的3.X版本) 下载地址: https://www.continuum.io/downloads 如果你是windows用户,直接进入官网下载下图的即可 为什么推荐anaconda呢? 因为anaconda是python的集成环境,自带了很多python的库(或者认为是包) 举个栗子: 如果Python是一个光杆司令的话,anaconda则是一个司令带着一堆军队 so,你应该知道为什么我推荐你装anaconda了吧 如果你已经装了原生python并且用了挺久,也pip install 了很多库,类似numpy,scipy,pandas 那么你一定遇到很多报错,恭喜你,你已经才过了很多坑啦~就像我一样 有趣的是: python是巨蟒的意思 anaconda是水蟒的意思 如果你在pip install numpy中由于网速慢安装报错,你可以来这里下载然后本地安装numpy https://pypi.python.org/pypi/numpy#downloads numpy快速入门官方文档:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html 环境python3.X 一颗栗子import numpy as np如果没报错,恭喜你,numpy安装完成 这里是把numpy命名为np 可以说是行业潜规则,当然是为了之后写代码简写方便 a = np.arange(15).reshape(3, 5) a注:这里的array(数组)是numpy中特有的类型,首先,使用np.arange(15)产生了一个一维数组,从0-14(注意范围) arange不是arrange,arange是numpy的方法,所以写为np.arange() 然后,使用reshape()方法将这个产生的数组重新造型为3行5列的二维数组,也就有了上图的样子。 a.shape注:查看数组格式,显示三行五列 a.ndim注:显示数组的维数 如果你想知道这个方法的含义,可以在jupyter notebook (装完anaconda自带的ide编辑器)里输入: ?np.dim还有举例子帮你理解呢~ a.dtype.name注:a数组中的数值类型 a.itemsize注:每个数组元素的字节大小 a.size注:a数组中的元素个数 type(a)注:a的类型 b = np.array([6, 7, 8]) b注:当然,你可以直接通过直接赋值创建一个数组 type(b)创建数组使用array方法直接通过list(列表)创建数组import numpy as npa = np.array([2,3,4]) aa.dtypeb = np.array([1.2, 3.5, 5.1])b.dtype注:可以创建整形和浮点型元素的数组 常见错误:没有经过list直接用数列创建数组 b = np.array([(1.5,2,3), (4,5,6)]) b注:创建二维数组 当然,创建数组的时候,也可以指明类型: c = np.array( [ [1,2], [3,4] ], dtype=complex ) c注:这里指定的是复数类型 np.zeros( (3,4) )注:创建全零数组,默认为float64形式 np.ones( (2,3,4), dtype=np.int16 )注:创建一个三维全1的数组,并且创建时指定类型 你可以认为是一个长方体里有序的充满了1 观察括号,有层次的 np.empty( (2,3) )注:创建一个二维的空数组,电脑不同导致显示不同 使用arange创建arraynp.arange( 10, 30, 5 )注:产生一个起始值为10,终止值为30(注意,终止值取不到),步长为5的数组 有点像c语言中的for循环格式 np.arange( 0, 2, 0.3 )注:这里想说它接受float的值,不仅仅是int类型的值 当使用浮点参数时,由于有限的浮点精度,通常不可能预测获得的元素的数量。 因此,通常最好使用函数linspace来接收我们想要的元素的数量作为参数,而不是使用步长参数: from numpy import pinp.linspace( 0, 2, 9 )注:产生0到2之间等间距(步长)的9个元素的数组,linspace和matlab中的用法一样 x = np.linspace( 0, 2*pi, 100 ) f = np.sin(x) f注:在之前import了pi(π),现在相当于在0~2pi之间产生100个均匀的数字作为x 然后通过sin(x)算出对应的y,部分结果如下: 更详细的操作可以在这里看:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html 就是下图这里,链接太多,就不一个个弄出来了 显示数组a = np.arange(6) print(a)注:打印一维数组 b = np.arange(12).reshape(4,3) print(b)注:打印二维数组 c = np.arange(24).reshape(2,3,4) print(c)注:打印三维数组 更多reshape方法可以看这里:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#quickstart-shape-manipulation 如果数组太大而无法全部打印,NumPy会自动跳过中央部分,只能打印出边界部分(首尾): print(np.arange(10000))print(np.arange(10000).reshape(100,100))要禁用此省略并强制NumPy打印整个数组,您可以使用set_printoptions更改打印选项。 np.set_printoptions(threshold='nan')基本操作a = np.array( [20,30,40,50] ) b = np.arange( 4 ) bc = a-b c注:数组相减 b**2注:b数组中每个元素平方 10*np.sin(a)注:a数组先进行sin运算,然后结果乘10 a |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |