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)提供了真正的数组功能,以及对数据 ...
随机推荐
- 01-电子商城项目介绍及ssm框架搭建
1.B2C电商项目功能及架构 1.1功能列表 1.2系统架构(soa架构) 2.后台管理系统工程搭建及测试 ypMall,ypMall-manager-web ypMall为父项目,管理子项目的jar ...
- perf4j+spring+aop 配置 注解方式
今天将perf4j基于spring aop方式进入了接入,接入方法还是比较简单.具体配置如下: logback.xml <!--perf4j配置--> <appender name= ...
- CF-1111B-Average Superhero Gang Power
首先,对于这题我们要知道要删除一个数使平均值最大一定是删除最小的数,然后我们假设删除操作执行了i次,也就是删除最小的i个数.在已知删除操作次数之后求增加操作的次数就容易了,当然是m - i和k * ( ...
- cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition
1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿 ...
- 吴裕雄--天生自然 R语言开发学习:方差分析(续一)
#-------------------------------------------------------------------# # R in Action (2nd ed): Chapte ...
- 理解 Redux 中间件机制
Redux 的 action 是一个 JS 对象,它表明了如何对 store 进行修改.但是 Redux 的中间件机制使action creator 不光可以返回 action 对象,也可以返回 ac ...
- 使用Win10自带的虚拟机安装Linux
Win10自带了一款虚拟机,感觉不错,可以试用一下: 安装:http://news.mydrivers.com/1/650/650018.htm 主要思路就是在BIOS里面开启CPU虚拟化,然后在Wi ...
- Docker Container开机自动启动
重启策略: 使用在Docker run的时候使用--restart参数来设置. no - Container不重启 on-failure - container推出状态非0时重启 always - 始 ...
- sphinx + mysql 全文索引配置
参考地址 http://v9.help.phpcms.cn/html/2010/search_0919/35.html http://blog.sina.com.cn/s/blog_705e4fdc0 ...
- How to Write a README on GitHub
最近在寫 GitHub 上的 README,發現這個東西好像每個人的寫法都不太一樣,於是稍微整理了一下自己覺得大概要包含哪些內容. Motivation 顧名思義就是簡介一下為什麼會有這個專案,以及這 ...