博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NumPy(数组计算)
阅读量:4660 次
发布时间:2019-06-09

本文共 3655 字,大约阅读时间需要 12 分钟。

一、介绍

  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()        将列表转换为数组,可选择显式指定dtypearange()        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 npa = 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**2numpy.log/log10/log2(array)         计算各元素的各种对数numpy.sign(array)                   计算各元素正负号numpy.isnan(array)                  计算各元素是否为NaNnumpy.isinf(array)                  计算各元素是否为NaNnumpy.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./array2numpy.power(array1,array2)          元素级指数 array1.^array2numpy.maximum/minimum(array1,aray2) 元素级最大值numpy.fmax/fmin(array1,array2)      元素级最大值,忽略NaNnumpy.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	给定形状产生随机数组

转载于:https://www.cnblogs.com/moning/p/8379323.html

你可能感兴趣的文章
JavaFX:禁止TableView的列拖拽功能
查看>>
6、ns-3数据跟踪
查看>>
java_js_避免无意义的条件判断
查看>>
Java并发程序设计(一) 基础概念
查看>>
Linux命令date日期时间和Unix时间戳互转
查看>>
LightOJ - 1297 Largest Box LightOJ(一元三次方程求极大值)
查看>>
883H - Palindromic Cut(思维+STL)
查看>>
.NET FTP上传文件
查看>>
操作系统中的调度算法
查看>>
JVM方法调用栈
查看>>
目标跟踪之Lukas-Kanade光流法
查看>>
python基础(第二课)
查看>>
C语言预处理条件语句的 与或运算
查看>>
D1图论最短路专题
查看>>
.Net core的日志系统
查看>>
shell脚本颜色的设置
查看>>
2019春总结作业
查看>>
小程序数据绑定的拓展用法
查看>>
DRF 版本 认证
查看>>
MVC 4将jQuery升级到1.9出现各种问题。。。
查看>>