NumPy:数组计算
一、MumPy:数组计算
1、NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
2、NumPy的主要功能:
- ndarray,一个多维数组结构,高效且节省空间
- 无需循环对整组数据进行快速运算的数学函数
- *读写磁盘数据的工具以及用于操作内存映射文件的工具
- *线性代数、随机数生成和傅里叶变换功能
- *用于集成C、C++等代码的工具
3、安装方法:pip install numpy
4、引用方式:import numpy as np
二、NumPy:ndarray-多维数组对象
1、创建ndarray:np.array()
2、ndarray是多维数组结构,与列表的区别是:
- 数组对象内的元素类型必须相同
- 数组大小不可修改
3、常用属性:
- T 数组的转置(对高维数组而言)
- dtype 数组元素的数据类型
- size 数组元素的个数
- ndim 数组的维数
- shape 数组的维度大小(以元组形式)
4、常用方法
array.shape array的规格
array.ndim
array.dtype array的数据规格
numpy.zeros(dim1,dim2) 创建dim1*dim2的零矩阵
numpy.arange
numpy.eye(n) /numpy.identity(n) 创建n*n单位矩阵
numpy.array([…data…], dtype=float64 )
array.astype(numpy.float64) 更换矩阵的数据形式
array.astype(float) 更换矩阵的数据形式
array * array 矩阵点乘
array[a:b] 切片
array.copy() 得到ndarray的副本,而不是视图
array [a] [b]=array [ a, b ] 两者等价
name=np.array(['bob','joe','will']) res=name==’bob’ res= array([ True, False, False], dtype=bool)
data[True,False,…..] 索引,只索取为True的部分,去掉False部分
通过布尔型索引选取数组中的数据,将总是创建数据的副本。
data[ [4,3,0,6] ] 索引,将第4,3,0,6行摘取出来,组成新数组
data[-1]=data[data.__len__()-1]
numpy.reshape(a,b) 将a*b的一维数组排列为a*b的形式
array([a,b,c,d],[d,e,f,g]) 返回一维数组,分别为[a,d],[b,e],[c,f],[d,g]
array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]
array.T array的转置
numpy.random.randn(a,b) 生成a*b的随机数组
numpy.dot(matrix_1,matrix_2) 矩阵乘法
array.transpose( (1,0,2,etc.) ) 对于高维数组,转置需要一个由轴编号组成的元组
三、NumPy:ndarray-数据类型
- ndarray数据类型:dtype:
- 布尔型:bool_
- 整型:int_ int8 int16 int32 int64
- 无符号整型:uint8 uint16 uint32 uint64
- 浮点型:float_ float16 float32 float64
- 复数型:complex_ complex64 complex128
四、NumPy:ndarray-创建
创建ndarray:
array() 将列表转换为数组,可选择显式指定dtype
arange() range的numpy版,支持浮点数
linspace() 类似arange(),第三个参数为数组长度
zeros() 根据指定形状和dtype创建全0数组
ones() 根据指定形状和dtype创建全1数组
empty() 根据指定形状和dtype创建空数组(随机值)
eye() 根据指定边长和dtype创建单位矩阵
五、NumPy:索引和切片
1、数组和标量之间的运算
a+1 a*3 1//a a**0.5
2、同样大小数组之间的运算
a+b a/b a**b
3、数组的索引:
一维数组: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]
4、强调:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法:copy()】
六、NumPy:布尔型索引
问题:给一个数组,选出数组中所有大于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])
七、NumPy:花式索引*
问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案:a[[1,3,4,6,7]] 问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案:a[:,[1,3]]
八、NumPy:通用函数’
通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数: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
2、浮点数有两个特殊值:
- nan(Not a Number):不等于任何浮点数(nan != nan)
- inf(infinity):比任何浮点数都大
在数据分析中,nan常被表示为数据缺失值
2、NumPy中创建特殊值:np.nan np.inf
3、在数据分析中,nan常被用作表示数据缺失值
既然nan连自己都不相等,那么怎么判断是不是NAN呢?
用a==a 只要返回False就能判断
十、NumPy:数学和统计方法
常用函数:
- sum 求和
- cumsum 求前缀和
- mean 求平均数
- std 求标准差
- var 求方差
- min 求最小值
- max 求最大值
- argmin 求最小值索引
- argmax 求最大值索引
十一、NumPy:随机数生成
随机数生成函数在np.random子包内
常用函数
- rand 给定形状产生随机数组(0到1之间的数)
- randint 给定形状产生随机整数
- choice 给定形状产生随机选择
- shuffle 与random.shuffle相同
- uniform 给定形状产生随机数组
NumPy:数组计算的更多相关文章
- NumPy(数组计算)
一.介绍 NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. 1.主要功能 1)ndarray,一个多维数组结构,高效且节省空间2)无需循环对整组数据进行快速运算的数 ...
- Numpy数组计算
NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. 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 ...
随机推荐
- ORA-01882 timezone region not found
解决方案有2个 1.在java运行环境中添加配置,制定时区 -Duser.timezone=GMT 2.修改系统时区 linux 下 1. 查看当前时区 date -R 2. 修改设置时区 方法(1) ...
- Hbase思维导图之架构
- mui的switch开关的应用
HTML: <!--mui的switch开关--> <div class="mui-content-padded"> <h5>switch开关m ...
- CSS公共清除浏览器默认样式
/*Vue隐藏*/ [v-cloak] { display: none; } /*清除样式*/ body, ol, ul, dl, li, dt, dd, h1, h2, h3, h4, h5, h6 ...
- 请求神器 postman安装
1. 先下载postman(http://pan.baidu.com/s/1pLERz5p 密码:aqy2) 2.将你的包存放在文件夹中 列如名称为postman 3.在Chrome的地址栏中输入:c ...
- 中国各省市县级 JSON 文件
参考链接:https://blog.csdn.net/lzhlzz/article/details/41347929
- 使用WinIo32绕过密码控件实现自动登录
通过winIO32绕过密码控件,实现自动登录 环境: vmware上安装windows 32位系统:windows xp / windows 7 selenium版本: 3.11.0 IEDriver ...
- Web方面的错误, 异常来自hresult:0x80070057(E_INVALIDARG)
删除 C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET files 这个文件夹. 解决方法: 1.代码保存频繁一点.做一个 ...
- CentOS7开启防火墙及特定端口
开启防火墙服务 以前为了方便,把防火墙都关闭了,因为现在项目都比较重要,害怕受到攻击,所以为了安全性,现在需要将防火墙开启,接下来介绍一下步骤. 1, 首先查看防火墙状态: firewall-cmd ...
- Python3学习笔记29-发送邮件
email模块用来构造邮件,smtplib模块用来发送邮件. 以QQ邮箱为例 想要在代码中使用QQ邮箱发送邮件,需要先在QQ邮箱-设置-账户中,开启SMTP服务,然后生成授权码.在进行验证账号时,用生 ...