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、常用方法

1array.shape array的规格 2array.ndim 3array.dtype array的数据规格 4numpy.zeros(dim1,dim2) 创建dim1*dim2的零矩阵 5numpy.arange 6numpy.eye(n) /numpy.identity(n) 创建n*n单位矩阵 7numpy.array([…data…], dtype=float64 ) 8array.astype(numpy.float64) 更换矩阵的数据形式 9array.astype(float) 更换矩阵的数据形式 10array * array 矩阵点乘 11array[a:b] 切片 12array.copy() 得到ndarray的副本,而不是视图 13array [a] [b]=array [ a, b ] 两者等价 14name=np.array(['bob','joe','will']) res=name==’bob’ res= array([ True, False, False], dtype=bool) 15data[True,False,..] 索引,只索取为True的部分,去掉False部分 16通过布尔型索引选取数组中的数据,将总是创建数据的副本。 17data[ [4,3,0,6] ] 索引,将第4,3,0,6行摘取出来,组成新数组 18data[-1]=data[data.__len__()-1] 19numpy.reshape(a,b) 将a*b的一维数组排列为a*b的形式 20array([a,b,c,d],[d,e,f,g]) 返回一维数组,分别为[a,d],[b,e],[c,f],[d,g] 21array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ] 22array.T array的转置 23numpy.random.randn(a,b) 生成a*b的随机数组 24numpy.dot(matrix_1,matrix_2) 矩阵乘法 25array.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-创建

1创建ndarray: 2 array() 将列表转换为数组,可选择显式指定dtype 3 arange() range的numpy版,支持浮点数 4 linspace() 类似arange(),第三个参数为数组长度 5 zeros() 根据指定形状和dtype创建全0数组 6 ones() 根据指定形状和dtype创建全1数组 7 empty() 根据指定形状和dtype创建空数组(随机值) 8 eye() 根据指定边长和dtype创建单位矩阵

五、NumPy:索引和切片

11、数组和标量之间的运算 2 a+1 a*3 1//a a**0.5 32、同样大小数组之间的运算 4 a+b a/b a**b 53、数组的索引: 6 一维数组:a[5] 7 多维数组: 8 列表式写法:a[2][3] 9 新式写法:a[2,3] (推荐) 10 数组的切片: 11 一维数组:a[5:8] a[4:] a[2:10] = 1 12 多维数组:a[1:2, 3:4] a[:,3:5] a[:,1] 134、强调:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。 【解决方法: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)]

1import numpy as np 2a = np.array([1,2,3,4,5,4,7,8,9,10]) 3a[a>5&(a%2==0)] #注意加括号,不叫括号错误,如下 4输出:array([ 1, 2, 3, 4, 5, 4, 7, 8, 9, 10]) 5a[(a>5)&(a%2==0)] 6输出:array([ 8, 10])

七、NumPy:花式索引*

1问题1:对于一个数组,选出其第13467个元素,组成新的二维数组。 2答案:a[[1,3,4,6,7]] 3 4问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。 5答案:a[:,[1,3]]

八、NumPy:通用函数’

通用函数:能同时对数组中所有元素进行运算的函数

常见通用函数:

一元函数:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, isnan, isinf, cos, sin, tan

1numpy.sqrt(array) 平方根函数 2numpy.exp(array) e^array[i]的数组 3numpy.abs/fabs(array) 计算绝对值 4numpy.square(array) 计算各元素的平方 等于array**2 5numpy.log/log10/log2(array) 计算各元素的各种对数 6numpy.sign(array) 计算各元素正负号 7numpy.isnan(array) 计算各元素是否为NaN 8numpy.isinf(array) 计算各元素是否为NaN 9numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数 10numpy.modf(array) 将array中值得整数和小数分离,作两个数组返回 11numpy.ceil(array) 向上取整,也就是取比这个数大的整数 12numpy.floor(array) 向下取整,也就是取比这个数小的整数 13numpy.rint(array) 四舍五入 14numpy.trunc(array)0取整 15numpy.cos(array) 正弦值 16numpy.sin(array) 余弦值 17numpy.tan(array) 正切值

二元函数:add, substract, multiply, divide, power, mod,  maximum, mininum, 

1numpy.add(array1,array2) 元素级加法 2numpy.subtract(array1,array2) 元素级减法 3numpy.multiply(array1,array2) 元素级乘法 4numpy.divide(array1,array2) 元素级除法 array1./array2 5numpy.power(array1,array2) 元素级指数 array1.^array2 6numpy.maximum/minimum(array1,aray2) 元素级最大值 7numpy.fmax/fmin(array1,array2) 元素级最大值,忽略NaN 8numpy.mod(array1,array2) 元素级求模 9numpy.copysign(array1,array2) 将第二个数组中值得符号复制给第一个数组中值 10numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2) 11元素级比较运算,产生布尔数组 12numpy.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 给定形状产生随机数组
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

PYTHON 数据分析常用类库

numpy科学计算的基础包(1)快速高效多维的数组对象ndarray(2)对数组执行元素级的计算以及直接对数组执行数学运算的函数(3)读写硬盘上基于数组的数据集的工具(4)线性代数运算,傅里叶变换,以及随机数生成(5)将C、C、Fortran代码集成到pythonscipy专门解决科学计算中各种标准问题域的模块的集合

Python数据分析

1.numpy\支持多维数组与矩阵的科学计算器包功能:常用功能16条a.ndarrayn维数组/矢量的操作。b. 支持高级大量的n维数组与矩阵的运算。c.针对数组运算提供大量的数学函数库。2.scipy\配合numpy完成对矩阵的计算,因此依赖于numpy,且含多个子模块功能:常用15个函数a. 标准导