python之numpy包知识要点总结
一、简介
numpy主要是用来存储和处理大型矩阵,提供了一种存储单一数据类型的多维数组对象------ndarray。还提供了多种运算函数,能够完成数据计算和统计分析,是数据分析的重要工具包。
二、数组对象(ndarray)
1、创建数组对象
(1)、创建自定义数组
1、numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
object:就是要创建的数组
dtype:表示数组所需的数据类型,默认是None,即保存对象所需的最小类型
ndmin:指定生成数组应该具有的最小维数,默认为None。

2、通过arange函数创建一维数组:arange(start, end, sep)

3、创建一维等差数组:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

4、创建等比数列:logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

5、创建全零数组:zeros(shape, dtype=None, order='C')

6、创建全为1的数组:ones(shape, dtype=None, order='C')

7、创建对角线全为1的多维数组:eye(N, M=None, k=0, dtype=float)

8、创建自定义对角线数值的数组:diag(v, k=0)

(2)、创建随机数组,利用numpy包里的random模块
1、创建0-1的随机浮点数一维数组:random.random(num)

2、创建指定范围的随机整数多维数组:randint(low, high=None, size=None, dtype='l')

3、创建服从均匀分布的随机数组,范围[0, 1):rand(*dn)

4、创建服从正态分布的随机数组:randn(*dn)

2、数组对象属性
---------数组属性:
ndim:表示数组维数,返回int类型
shape:表示数组的形状大小,对于n行m列的矩阵,形状为(n,m),返回tuple类型
size:表示数组的元素总个数,等于数组形状的乘积,返回int类型
dtype:描述数组中的元素的类型,返回data-type
itemsize:表示数组的每个元素的大小(以字节为单位),返回int类型
-----------访问属性:

3、改变数组形状
(1)、使用shape改变形状

(2)、使用reshape改变形状

(3)、展平数组:
----使用ravel函数

----使用flatten函数

(4)、组合数组:
-----使用hstack/vstack函数

-----使用concatenate函数

(5)、分割数组:
-----使用hsplit/vsplit函授

-----使用split函数

4、访问数组
(1)、一维数组的访问

(2)、二维数组的访问

三、数据类型
numpy的数据类型比python内置的数据类型多,常用的数据类型如下所示:(引用菜鸟教程:http://www.runoob.com/numpy/numpy-dtype.html)

四:numpy的矩阵对象
1、创建矩阵

2、矩阵属性
T:返回自身的转置
H:返回自身的共轭转置
I:返回自身的逆矩阵
A:返回自身数据的二维数组的一个视图

3、矩阵运算
(1)、四则运算




(2)、比较运算
比较运算符:>、<、==、>=、<=、!=
返回结果:一个布尔数组,也就是每个元素的比较结果

(3)、逻辑运算
逻辑运算符:逻辑或-----any,逻辑与------all
返回结果:一个布尔值True或False

五、ufunc函数(universal function)
1、概念:
全程通用函数(universal function),是一种能够对数组中所有元素进行操作的函数,结果是以数组形式输出,因此不需要对数组每个元素都进行操作,所以比math库中的函数操作效率高。
2、广播机制
广播(broadcasing)是指不同形状的数组之间进行算数运算的一种方式。
3、广播机制----->四原则
参与运算的数组其中一个的维度为1且列相等
参与运算的数组的维度相等,则其中一个的列为1且行相等
参与运算的数组都向其中形状最大的看齐,即根据shape属性最大的运算,形状不足的就加按照行或列补齐,也就是行复制或者列复制
输出的数组跟最大的数组形状相同

六、利用numpy统计分析
1、文件的读写
(1)、以二进制形式写入/读取文件
-----写入文件:save(file, arr, allow_pickle=True, fix_imports=True)/savez(file, arr, allow_pickle=True, fix_imports=True)

-----读取文件:load(file, mmap_mode=None, allow_pickle=True, fix_imports=True,encoding='ASCII')


(2)、以文本形式写入/读取文件(txt,csv格式)
-----写入文件:loadtxt(fname, dtype=float, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False,ndmin=0)

-----读取文件:loadtxt(fname, dtype=float, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False,ndmin=0)

2、数组排序
(1)、直接排序
方法:sort(a, axis=-1, kind='quicksort', order=None)
参数:axis=1 为沿横轴排序; axis=0 为沿纵轴排序,默认沿横轴排序

(2)、间接排序
方法:argsort(a, axis=-1, kind='quicksort', order=None),返回的是下标
参数:axis=0 为沿横轴排序; axis=0 为沿纵轴排序,默认沿横轴排序

3、数据去重
方法:unique(ar, return_index=False, return_inverse=False,return_counts=False, axis=None)

4、重复数据,可以理解为数据的复制
(1)、重复整个数组
方法:tile(A, reps)
参数:A表示数组,reps表示重复的个数
(2)、重复数组中的元素
方法:repeat(a, repeats, axis=None)
参数:a 表示传入的数组,repeats表示要重复的次数,axis=1表示沿横轴重复,axis=0表示沿纵轴重复

5、常用统计函数
参数:axis=0 表示纵向计算
axis=1 表示横向计算
默认不写 表示计算整个数组
(1)、求和:sum

(2)、求平均值:mean

(3)、求最大值:max

(4)、求最小值:min

(5)、求最大元素的索引:argmax

(6)、求最小元素的索引:argmin

(7)、求方差:var

(8)、求标准差:std

(9)、求所有元素的累计和:cumsum

(10)、求所有元素的累计积:cumprod

python之numpy包知识要点总结的更多相关文章
- windows下python安装Numpy、Scipy、matplotlib模块(转载)
python下载链接 Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...
- python numpy包
在numpy包中我们可以用数组来表示向量,矩阵和高阶数据结构 首先导入numpy包: from numpy import* 初始化numpy数组有多种方式,比如说 1.python列表或元祖 2.使用 ...
- Python Numpy包安装
1,下载python 下载地址: https://www.python.org/downloads/windows/ 2,配置python环境变量 在电脑的系统属性的系统变量path中添加python ...
- Python原来这么好学-1.3节: 知识要点总结与内容复习
这是一本教同学们彻底学通Python的高质量学习教程,认真地学习每一章节的内容,每天只需学好一节,帮助你成为一名卓越的Python程序员: 本教程面向的是零编程基础的同学,非科班人士,以及有一定编 ...
- Python之Numpy详细教程
NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...
- Python中Numpy及Matplotlib使用
Python中Numpy及Matplotlib使用 1. Jupyter Notebooks 作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!! 你可以 ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决
这篇文章主要讲述Python如何安装Numpy.Scipy.Matlotlib.Scikit-learn等库的过程及遇到的问题解决方法.最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所 ...
- python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
随机推荐
- idea 2018.1破解激活方法,有效期至2099年
优点:有效期至2099年,不出意外,这辈子肯定够用了 缺点:稍微麻烦些,不过不要紧,为了以后省事,都值了 下面是具体的破解激活步骤: 1. 下载破解补丁文件,路径为:http://idea.lanyu ...
- 【python小练】0020
第 0020 题: 登陆中国联通网上营业厅 后选择「自助服务」 --> 「详单查询」,然后选择你要查询的时间段,点击「查询」按钮,查询结果页面的最下方,点击「导出」,就会生成类似于 2014年1 ...
- vs不自动退出控制台程序的办法
1.在主函数rerurn 前加上getchar();即可. 2.ctrl+F5;
- 新闻类App顶部菜单栏封装
概述 最近有一个需求,类似今日头条顶部的菜单栏.唯一区别是需要带可移动的下划线.网上查找资料,发现解决方案大部分是用UIScrollView实现.下方VC控制用UICollectionView.这样可 ...
- ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用
ThinkPHP5.0.21&5.1.* 代码执行和命令执行漏洞利用 ThinkPHP5.0.21&5.1.* exploit code execution and command ...
- I/O 流
输入流的几个常用方法: 1,复制一个文件; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...
- luogu P5234 [JSOI2012]越狱老虎桥
传送门 题目要求割掉一条边后使得图不连通,那么可以使用tarjan算法求出所有的割边,然后把边双缩成点,就能得到一棵树,现在问题是在加入一条边的情况下,割掉最小的一条边使得图不连通,割掉的这条边权值最 ...
- Charles手机抓包设置&无法打开火狐网页设置
1. Charles抓取手机上的网络包,需要安装证书(Charles的和手机的) 操作方法: https://blog.csdn.net/lea__dongyang/article/details/7 ...
- [国家集训队] Crash 的文明世界
不错的树形$ DP$的题 可为什么我自带大常数啊$ cry$ 链接:here 题意:给定一棵$ n$个节点的树,边权为$ 1$,对于每个点$ x$求$ \sum\limits_{i=1}^n dist ...
- ES6走一波 module
ES6模块设计思想: 尽量静态化,使得编译时就能确定模块的依赖关系,输入.输出的变量.可做静态优化. ES6模块不是对象,而是通过export命令显示指定输出的代码,再通过import命令输入 ex ...