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)提供了真正的数组功能,以及对数据 ...
随机推荐
- D. Fish eating fruit
题:https://nanti.jisuanke.com/t/41403 题意:求任意俩点之间距离之和模3后的三个结果的总数(原距离之和) 第一种做法: 树形dp #include<bits/s ...
- LeetCode No.97,98,99
No.97 IsInterleave 交错字符串 题目 给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的. 示例 输入: s1 = "aabcc&qu ...
- 系统学习Javaweb6----JavaScript2
感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...
- LGOJ3975 TJOI2015 弦论
link:TJOI2015 弦论 题目大意: 给定一个字符串,输出在对该字符串所有的非空子串排序后第\(k\)个 另外的一个限制是\(T\):子串本质相同但位置不同算\(1\)或多个 \(|s| \l ...
- Zblog主题模板自适应手机响应式ZblogPHP简洁博客主题
Z-blog PHP版本简洁主题模板 特点简洁舒适 手机移动端自适应,完美有利于优化 代码结构利于编辑 对于不懂代码的,也非常适合简答后台简答 PC端侧边栏下拉跟随,无论下面有多长,导航侧边栏都只在左 ...
- C++ const成员变量和成员函数(常成员函数)
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只 ...
- Django使用DjangoUeditor教程
文章目录 1.将下在DjangoUeditor解压2.将解压的文件夹复制到项目的根目录中,这里使用的是虚拟环境3.进入到DjangoUedior3-master文件下,执行离线安装命令 python ...
- Dubbo+zookeeper 基础讲解
一.dubbo是什么? 1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架. 既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用.我简单 ...
- Sublime Text2 使用心得总结
sublime text2是开发代码编辑的神器 ,编辑器界面优美,操作速度快速.而且Sublime Text2是一款跨平台的编辑器,再也不用为换平台而找不到合适的.熟悉的编辑器担忧了. Sublime ...
- 编译gcc报错make[3]: Leaving directory `/usr/local/src/gcc-7.4.0/build/gcc' make[2]: *** [all-stage1-gcc] Error 2 处理
因业务需要安装7.4高版本gcc时报错: configure: error: in `/usr/local/src/gcc-7.4.0/build/gcc': configure: error: C+ ...