python数据分析工具 | numpy
Python中没有提供数组功能,虽然列表可以完成基本的数组功能,但并不是真正的数组,而且在数据量较大时,使用列表的速度回非常慢。因此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数。Numpy内置函数处理数据的速度是C语言级别的,因此,尽量使用其内置函数。
Numpy安装
Numpy安装和普通的第三方库安装一样,最常用的就是利用 pip 安装:
pip install numpy
如果你想做数据分析的话,还是建议安装 anaconda(Windows、macOS、Linux均可使用) ,它是一个集成环境,包含了conda、Python在内的超过180个科学包及其依赖项,几乎所有你用到的库都已经帮你安装好了,同时如果需要其他的第三方库要安装,可以使用其中的 conda 便捷的安装相应库以及依赖。
Numpy基本操作
基本属性
numpy包含很多自己的属性和方法,下面通过一个栗子说明一下几个它自身的重要属性。
创建数组
import numpy as np
data = np.array([[1, 2, 3], [4, 5, 6]]) # 创建二维数组
上面是最基本的创建数组方法,但是对于实际应用中,它内置的一些函数更为实用。例如:
下面举例展示一下其中部分用法:
基本操作
Numpy的一个显著特点就是它的矢量化,使得对其操作是面向整个数组而不是各个元素,这就省去了很多开销,具体实现交给更加高效的C来做。矢量化对每个元素执行相同的操作,例如常见的加减乘除等。
特殊的,numpy中的“*”是数乘(按元素运算),矩阵乘法用dot函数来表示,表示为 c.dot(d)。
numpy还有很多常用的内置方法,例如求和等。
import numpy as np
np.random.random((2, 3)) # 创建一个元素值为0-1之间的随机数的 2*3 的矩阵
data = np.array([2, 3, 4, 6, 1, 7, 9])
data.sum() # 求数组所有元素的和
data.max() # 求数组中最大值
data.min() # 求数组中最小值
# 除此之外还包括下面这些常用函数
# prod 积 mean 平均数 std 标准差 var 方差 argin 最小值索引 argmax 最大值索引 median 中位数 any 至少一个为真 all 所有元素为真
上述操作的对象为一维数组,那么对于二维或者多维数组来说,也有一些常用的操作。多维数组可以通过手动创建(np.array),或者通过内置函数设置数组结果(np.zeros等),除此之外还有一个特殊的方法,就是利用 reshape 修改数组的结构。上述的求和,求极值等方法在多维数组中也可以通过设置 axis 参数来灵活操作。axis表示多维数组中的轴。
说到 reshape ,那就集中说一下数组的变形。
data.reshape((x, y)) # 将原数组变为x行y列
data.resize((x, y)) # resize与reshape不同之处在于,resize改变数组本身
data.ravel() # 将多维数组展平为一维
data.T # 将数组转
数组的索引切片。至于索引切片操作,其实是和python中的列表一致的,不赘述。
data[x:y:z] # 表示从下标 x 到 y-1 中按步长 z 取元素
广播也是numpy中常用的知识。
广播(Broadcasting)规则
广播允许通用功能以有意义的方式处理不具有完全相同形状的输入。
广播的第一个规则是,如果所有输入数组不具有相同数量的维度,则将“1”重复地预先添加到较小数组的形状,直到所有数组具有相同数量的维度。
广播的第二个规则确保沿特定维度的大小为1的数组表现为具有沿该维度具有最大形状的数组的大小。假定数组元素的值沿着“广播”数组的那个维度是相同的。
--引自Numpy中文网(https://www.numpy.org.cn/)
也许比较抽象,画图说明一下。
图中A为2*3的矩阵,B是一维的,若要相加必须调整为相同结构。根据第一条规则,在左侧再添加维度得B(1,3),根据规则二,将对应维度上的元素为一的补齐,则完全复制一份B拼接在下面,形成维度相同的两个矩阵再进行相加运算。若将所有大小为1的维度补齐后,两数组仍维度不同,那么不能进行计算。给个例子大家可以琢磨一下:A(2,5),B(3),最终column分别为5和3,则维度不同。
python数据分析工具 | numpy的更多相关文章
- Python数据分析工具:Pandas之Series
Python数据分析工具:Pandas之Series Pandas概述Pandas是Python的一个数据分析包,该工具为解决数据分析任务而创建.Pandas纳入大量库和标准数据模型,提供高效的操作数 ...
- Python数据分析--工具安装及Numpy介绍(1)
Anaconda 是一个跨平台的版本,通过命令行来管理安装包.进行大规模数据处理.预测分析和科学计算.它包括近 200 个工具包,大数据处理需要用到的常见包有 NumPy . SciPy . pand ...
- Python数据分析(二): Numpy技巧 (1/4)
In [1]: import numpy numpy.__version__ Out[1]: '1.13.1' In [2]: import numpy as np
- Python数据分析(二): Numpy技巧 (2/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 昨天晚上发了第一 ...
- Python数据分析(二): Numpy技巧 (3/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 昨天晚上发了第一 ...
- Python数据分析(二): Numpy技巧 (4/4)
numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 第一部分: ht ...
- python数据分析工具安装集合
用python做数据分析离不开几个好的轮子(或称为科学棧/第三方包等),比如matplotlib,numpy, scipy, pandas, scikit-learn, gensim等,这些包的功能强 ...
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- Python数据分析工具库-Numpy 数组支持库(一)
1 Numpy数组 在Python中有类似数组功能的数据结构,比如list,但在数据量大时,list的运行速度便不尽如意,Numpy(Numerical Python)提供了真正的数组功能,以及对数据 ...
随机推荐
- 系统学习Javaweb10----BootStrap2
学习内容: 1.BootStrap-轮播图 2.BootStrap-排版对齐方式 3.BootStrap-表单元素 4.BootStrap-分页条
- rest framework-分页-长期维护
############### 分页组件 ############### # 分页组件 # # django也有分页,rest framework也有分页,但是没有页面这个概念了, # 这个分页 ...
- djangp-filter的使用
目录 Filter定义 Filter定义 定义如下Filter类 class BookFilter(django_filters.FilterSet): name = django_filters.C ...
- Smarty使用-模版中编写js
在smarty模版中编写js使用literal标签, Literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的 javas ...
- EXCEL数据汇总-数据透视图
- 奇点云数据中台技术汇(四)| DataSimba系列之流式计算
你是否有过这样的念头:如果能立刻马上看到我想要的数据,我就能更好地决策? 市场变化越来越快,企业对于数据及时性的需求,也越来越大,另一方面,当下数据容量呈几何倍暴增,数据的价值在其产生之后,也将随 ...
- TPO3-2 Depletion of Ogallala Aquifer
Estimates indicate that the aquifer contains enough water to fill Lake Huron, but unfortunately, und ...
- leaflet加载各种地图
Leaflet调用各种地图的功能十分复杂,幸好有leaflet.ChineseTmsProviders这个插件,这四种地图直接就可以加载进来,十分方便. 下面是我做的例子: <!DOCTYPE ...
- Springboot实现发送邮箱
https://blog.csdn.net/xubin1623875795/article/details/78967141 http://www.cnblogs.com/jmcui/p/975844 ...
- 吴裕雄--天生自然Android开发学习:android 背景相关与系统架构分析
1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google ...