python numpy函数库_Python数据分析Numpy库常用函数详解,提到循环就该想到的库

Python进行数据分析的核心库肯定是Pandas,该库差不多可以解决结构化数据的绝大部分处理需求。在《Python数据分析常用函数及参数详解,可以留着以备不时之需 》一文中也已经对该库的常用函数进行了详细介绍。

但是Pandas是构建在Numpy的基础之上的,它的矢量化运算功能在处理数组和矩阵上具有着非常大的优势。虽然普通的数据分析任务可能很少用到Numpy库,但一旦你具有循环需求或是要处理数值型数据时,你应该首先想到该库。

本文整理了该库的一些常用函数和基础知识,整理不易,希望觉得还不错的朋友可以不吝给个赞。

基础介绍

在介绍函数之前先介绍下Numpy库的基本情况,该库最重要的特点就是其ndarray对象,这个对象可以理解成线性代数里面的数组,每个数组有维度和类型等属性。

维度

直观地判断数组对象有几个维度可通过判断其包含在几层[]中,一层[]即为一维。其中,一维数组可看成是向量,二维数组可看成是有行和列的数据,三维数组可看成是有页,且每页中有行和列的数据,至于更高维度就只能意会了。

类型

数组并不是只能存数值型数据,是也可以存字符串的,但它要求元素类型必须一致,不一致时会按照str > float > int的优先级进行类型转变。例如,在一个整数数组中插入字符串,就会将全部元素转成字符串类型。

另外说一下广播机制。通俗地理解广播机制就是当对不同形状的数组进行算术运算时,广播机制会自动将两个数组补全为相同形状的数组。但需要具备以下前提条件之一:两个数组维度数不等时,二者从末尾开始算起的维度的轴长度相等;两个数组维度数相等时,其中一方的有一个维度的长度为1。关于这一点的理解最好是多加练习。

Numpy常用函数分类

为了更好地理解该库的函数,本文将常用的函数按照下面方式进行分类。

2a22fb60aae08fbf3d0e26f8be721681.jpeg-wh_651x-s_222312809.jpeg

其中基础函数包含对象创建、属性查看、切片索引、形状变换等小类;random模块就是一些常用的随机函数;char模块主要是用来处理字符数组类,也就是数组元素是字符串类型的数据;Matlib是Numpy中的矩阵库,矩阵其实是一种特殊的数组,但它必须是二维的;linglg库是属于线性代数的函数库。

后三个库的函数一般常用于科学计算和图像识别等领域,在数据分析中几乎用不上,因此本文不做介绍,但大家应该知道有这两个库,便于有需求时知道Numpy也具备相应的功能。

基础函数

以下均用arr表示数组,np表示numpy库

(1)对象创建

array(object, dtype =None,order=None, ndmin =0)

#order为创建方式,C为行方向,F为列方向,默认为C,ndmin指定生成数组的最小维度

arange(start=0,stop=4,step=,dtype=)

#生成一维数组,不包含stop

linspace(start=,stop=,num=,endpoint=True)

#生成一维等差数据,endpoint决定是否包含stop值,默认包含

asarray(object,dtype=None,order=None)

#将对象转换为数组

zeros(shape,dtype=float,order='C')

#生成元素全为0的数组

ones(shape,dtype=float,order='C')

#生成元素全为1的数组

eye(N,dtype=float,order='C')

#生成对角线元素为1,其余元素为0的N阶矩阵

(2)属性查看

arr.shape

#数组的形状

arr.ndim

#数组的维度

arr.size

#数组的长度

arr.dtype

#数组数据类型

(3)切片索引

arr[i]

#取i行

arr[[i,j]]

#取i,j行

arr[:,i:j]

#取i到j-1列

arr[::-1,::-1]

#元素反转

np.where(condition,x,y)

#condition为真的数组中数据赋值x,否则为y

(4)形状变换

arr.reshape(newshape,order=None)

#newshape为新维度,元组格式

arr.flatten(order='C')

#将数组平铺为一维数组,order表示按行还是按列,默认按行

arr.T

#数组转置

arr.transpose()

#数组转置

np.append(arr,values,axis=None)

#axis控制返回什么类型,默认返回的是拼接后的一维数组

np.concatenate((arr1,arr2,arr3),axis=0)

#可拼接多个数组

(5)统计函数

arr.sum(axis = None)

#axis为整数或者元组

arr.mean(axis = None)

#计算平均值

arr.std(axis = None)

#计算标准差

arr.var(axis = None)

#计算方差

np.average(arr,axis =None, weights =None)

#计算数组的加权平均值,weights中为权重

np.median(arr,axis=None)

# 计算数组中元素的中位数

arr.argmin(axis=None)

##返回数组最小值的位置

arr.argmax(a)

#返回数组最大值的位置

np.dot(arr1,arr2)

#数组的点积运算

random库

随机函数在生成练习数据等方面是非常有帮助的,可以重点掌握一下。

np.random.rand(d0,d1,d2,……)

#返回输入维度的随机数,随机数服从[0, 1)区间的均匀分布

np.random.randn(d0,d1,d2,……)

#返回输入维度的标准正态分布随机数

np.random.normal(loc=0.0,scale=1.0,size=None)

#返回输入维度的正态分布随机数,可控制正态分布的期望和方差

np.random.randint(low=,high=,size=None,dtype='l')

#返回属于[low,high)区间的随机整数,size可为元组

np.random.seed(s)

#随机数种子,可保证两次随机数生成的结果一样

【编辑推荐】

【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值