NumPy(数组计算)
一、介绍
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
1.主要功能
1)ndarray,一个多维数组结构,高效且节省空间
2)无需循环对整组数据进行快速运算的数学函数
3)读写磁盘数据的工具以及用于操作内存映射文件的工具
4)线性代数、随机数生成和傅里叶变换功能
5)用于集成C、C++等代码的工具
2.安装方法
pip install numpy
3.引用方法
import numpy as np
二、ndarray-多维数组对象
创建ndarray:np.array()
ndarray是多维数组结构,与列表的区别是:
数组对象内的元素类型必须相同
数组大小不可修改
常用属性:
T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
三、ndarray-数据类型
ndarray数据类型:dtype:
布尔型:bool_
整型:int_ int8 int16 int32 int64
无符号整型:uint8 uint16 uint32 uint64
浮点型:float_ float16 float32 float64
复数型:complex_ complex64 complex128
四、ndarray-创建
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵
五、索引和切片
数组和标量之间的运算
a+1 a*3 1//a a**0.5
同样大小数组之间的运算
a+b a/b a**b
数组的索引:
一维数组:a[5]
多维数组:
列表式写法:a[2][3]
新式写法:a[2,3] (推荐)
数组的切片:
一维数组:a[5:8] a[4:] a[2:10] = 1
多维数组:a[1:2, 3:4] a[:,3:5] a[:,1]
与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】
六、布尔型索引
问题:给一个数组,选出数组中所有大于5的数。
答案:a[a>5]
原理:
a>5会对a中的每一个元素进行判断,返回一个布尔数组
布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组
问题2:给一个数组,选出数组中所有大于5的偶数。
问题3:给一个数组,选出数组中所有大于5的数和偶数。
答案:
a[(a>5) & (a%2==0)]
a[(a>5) | (a%2==0)]
import numpy as np
a = np.array([1,2,3,4,5,4,7,8,9,10])
a[a>5&(a%2==0)] #注意加括号,不叫括号错误,如下
输出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10])
a[(a>5)&(a%2==0)]
输出:array([ 8, 10])
七、花式索引
问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]] 问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]
八、通用函数
通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan
numpy.sqrt(array) 平方根函数
numpy.exp(array) e^array[i]的数组
numpy.abs/fabs(array) 计算绝对值
numpy.square(array) 计算各元素的平方 等于array**2
numpy.log/log10/log2(array) 计算各元素的各种对数
numpy.sign(array) 计算各元素正负号
numpy.isnan(array) 计算各元素是否为NaN
numpy.isinf(array) 计算各元素是否为NaN
numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
numpy.modf(array) 将array中值得整数和小数分离,作两个数组返回
numpy.ceil(array) 向上取整,也就是取比这个数大的整数
numpy.floor(array) 向下取整,也就是取比这个数小的整数
numpy.rint(array) 四舍五入
numpy.trunc(array) 向0取整
numpy.cos(array) 正弦值
numpy.sin(array) 余弦值
numpy.tan(array) 正切值
二元函数:add, substract, multiply, divide, power, mod, maximum, mininum,
numpy.add(array1,array2) 元素级加法
numpy.subtract(array1,array2) 元素级减法
numpy.multiply(array1,array2) 元素级乘法
numpy.divide(array1,array2) 元素级除法 array1./array2
numpy.power(array1,array2) 元素级指数 array1.^array2
numpy.maximum/minimum(array1,aray2) 元素级最大值
numpy.fmax/fmin(array1,array2) 元素级最大值,忽略NaN
numpy.mod(array1,array2) 元素级求模
numpy.copysign(array1,array2) 将第二个数组中值得符号复制给第一个数组中值
numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)
元素级比较运算,产生布尔数组
numpy.logical_end/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算
九、补充知识:浮点数特殊值
1.浮点数:float
浮点数有两个特殊值:
- nan(Not a Number):不等于任何浮点数(nan != nan)
- inf(infinity):比任何浮点数都大
在数据分析中,nan常被表示为数据缺失值
2.NumPy中创建特殊值:np.nan np.inf
3.在数据分析中,nan常被用作表示数据缺失值
既然nan连自己都不相等,那么怎么判断是不是NAN呢?
用a==a 只要返回False就能判断

十、数学和统计方法
常用函数: sum 求和
cumsum 求前缀和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
十一、随机数生成
随机数生成函数在np.random子包内
常用函数 rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择
shuffle 与random.shuffle相同
uniform 给定形状产生随机数组
NumPy(数组计算)的更多相关文章
- Numpy数组计算
NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. NumPy的主要功能 ndarray,一个多维数组结构,高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...
- NumPy:数组计算
一.MumPy:数组计算 1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环 ...
- numpy数组常用计算
在说numpy库数组的计算之前先来看一下numpy数组形状的知识: 创建一个数组之后,可以用shape来查看其形状,返回一个元组 例如:a = np.array([[1, 2, 3], [4, 5, ...
- numpy之数组计算
# coding=utf-8import numpy as npimport random #数组和数字计算,进行广播计算,包括加减乘除 t8 = t8 +2 print(t8,t8.dtype,t8 ...
- 科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数)
Mlab了解 Mlab是Mayavi提供的面向脚本的api,他可以实现快速的三维可视化,Mayavi可以通过Mlab的绘图函数对Numpy数组建立可视化. 过程为: .建立数据源 .使用Filter( ...
- 操作 numpy 数组的常用函数
操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...
- NumPy 超详细教程(1):NumPy 数组
系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...
- Python-Numpy数组计算
一.NumPy:数组计算 1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: ndarray,一个多维数组结构,高效且节省空间 无需循环 ...
- numpy数组(5)-二维数组的轴
numpy的mean(),std()等方法是作用于整个numpy数组的,如果是二维数组的话,也是整个数组,包括所有行和列,但我们经常需要它仅作用于行或者列,而不是整个二维数组,这个时候,可以定义轴ax ...
随机推荐
- 朴素贝叶斯算法分析及java 实现
1. 先引入一个简单的例子 出处:http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html 一.病人分类的例子 让我从一个例 ...
- android studio在windows上设置git/ssh
windows果然是与众不同的,凡事都要那么麻烦一点点(当然..是对程序员来说..) 一开始,我想用cygwin里的git,就省得我再多装一套软件,配置也可以统一,但事实证明不行 在android s ...
- Entity Framework Code-First(10.1):EntityTypeConfiguration
EntityTypeConfiguration Class in Code-First: Before we start to configure using Fluent API, let's se ...
- C#中的单体设计模式Singleton
经典的单体设计模式的实现就是 有一个Public的类,在这个类中,有一个私有的private的构造函数. 然后有一个静态方法,这个静态方法返回这个类的实例 举个例子如下 Public class My ...
- 1.jQuery入口函数 与javaScript入口函数
1.jQuery入口函数 与javaScript入口函数 JQ入口函数: $(document).ready(function(){ }); 或者 $(function(){ }) Js入口函数: w ...
- .net Core命令行,Json配置
创建.netCore控制台 NuGet :Microsoft.AspNetCore.All static void Main(string[] args) { var builder = new Co ...
- laravel5.4 正式环境 linux 下出现undefined code
1.laravel5.4 正式环境 linux 下出现undefined code问题 报错位置在:登录模块中login 引用 报$_SESSION['code'] 中的code 并未定义 原因: ...
- 百度AI图片识别
官方文档:http://ai.baidu.com/tech/ocr/general
- 开发整理-Javaweb应用的系统升级功能
web应用有一个功能菜单是系统升级,通过调用升级脚本,将新发布的war替换原来的tomcat的webapps下的应用,然后停掉tomcate,再重启tomcate.最初实现就是通过简单的用在web项目 ...
- C#网络编程学习(6)---序列化和反序列化
1.什么是序列化和反序列化 当客户端和服务器进行远程连接时,互相可以发送各种类型的数据.但都要先把这些对象转换为字节序列,才能在网络上进行传输. 序列化:就是发送方 把对象转换为字节序列的过程. 反序 ...