typora-root-url: 图片
一、第三方库numpy 1、数组对象 1)导入numpy
import numpy as np2)产生数组 1、从列表传入
l=[0,1,2,3] a=np.array(l) a=np.array([1,2,3,4])2、生成全0数组
np.zeros(参数)
a=np.zeros(zeros(shape,dtype=float,order='C')生成全0数组
参数:
shape:形状
dtype:数据类型
,可选参数,默认numpy.float64
order:可选参数,c代表与c语言类似,行优先;F代表列优先
a=np.zeros(10)
3、生成全1数组
np.ones(参数) a=np.ones(zeros(shape,dtype=float,order='C')生成全1数组4、填充数组
ndarray.fill(value) 可以使用fill方法将数组设定为指定值 a=np.array([1,2,3,4]) a.fill(2.5) ##传入的参数类型会按照原数组类型进行转换 与列表不同,数组中要求所有元素的dtype是一样的,如果传入参数的类型与数组类型不一样,需要按照已有的类型进行转换。5、np.arange([start, ]stop, [step, ]dtype=None)
start:可忽略不写,默认从0开始;起始值 stop:结束值;生成的元素不包括结束值 step:可忽略不写,默认步长为1;步长 dtype:默认为None,设置显示元素的数据类型6、生成等差数列
np.linspace(start,end,num) numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) endpoint:False,不包含结束 retste:为最后一个值跟最大值的差值7、生成随机数
numpy.random.randint(low, high=None, size=None, dtype=’l’)
size:为维度大小
a=np.random.rand(10) ##生成0-1的10个随机数
b=np.random.randn(10) ##生成0-1的10个随机数,随机数服从标准正太分布
c=np.random.randint(1,10,10) ##生成1-10的10个随机整数
np.random.normal(loc=0.0, scale=1.0, size=None)#生成高斯分布的概率密度随机数
loc:float
此概率分布的均值(对应着整个分布的中心centre)
scale:float
此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints
输出的shape,默认为None,只输出一个值
8、产生多维数组
a=np.array([[arr][arr][arr]])
3)np.array函数
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
object 必选参数,类型为array_like,可以有四种类型:数组,公开数组接口的任何对象,__array__方法返回数组的对象,或任何(嵌套)序列。 ndarray。满足指定要求的数组对象。
dtype 数据类型,可选
数组所需的数据类型。如果没有给出,那么类型将被确定为保持序列中的对象所需的最小类型。此参数只能用于“upcast”数组。对于向下转换,请使用.astype(t)方法。
copy bool,可选
如果为true(默认值),则复制对象。否则,只有当__array__返回副本,obj是嵌套序列,或者需要副本来满足任何其他要求(dtype,顺序等)时,才会进行复制。
order {‘K’,‘A’,‘C’,‘F’},可选
指定阵列的内存布局。如果object不是数组,则新创建的数组将按C顺序排列(行主要),除非指定了’F’,在这种情况下,它将采用Fortran顺序(专业列)。如果object是一个数组,则以下成立。
subok 可选参数,类型为bool值。如果为True,则子类将被传递,否则返回的数组将被强制为基类数组(默认)。或者说,True:使用object的内部数据类型,False:使用object数组的数据类型。
ndmin 可选参数,类型为int型。指定结果数组应具有的最小维数。
2、数组属性
1)type(ndarray)
查看类型 a=np.array([1,2,3,4]) type(a)
2)ndarray.dtype
ndarray.dtype 查看数组中的数据类型
3)ndarray.shape
查看形状 ndarray.shape
4)ndarray.size
查看数组元素的条目 ndarray.size
5)ndarray.ndim
ndarray.ndim2、索引和切片 1、基本索引
ndarray[start:end:step] start可不写,默认从0开始 end可不写,默认到最后 step可不写,默认为1,支持负索引2、多维数组索引
ndarray[行,列] ndarray[::,::]3、布尔花式索引
mask=np.array([0,2,2,0,0,1,0,0,1,0],dtype=bool) y=a[mask] mask必须是布尔数组,长度必须和数组长度相等4、索引指定位置
a[(0,1,2,3,4),(1,2,3,4,5)] ##两个括号相对位置的数分别为行标和列标3、where语句 1、np.where(arr比较)
where函数会返回所有非零元素的索引
a=np.random.randint(1,10,10) np.where(a>5) np.where(a>5,1,0)#如果a>5True则1,False0
2、np.argwhere(arr比较)
argwhere放回满足条件的下标
np.argwhere(ser %2==0)
4、数组类型
数组类型 布尔型:bool:占一个字节 整型:int8/16/32/64/128,int:和C语言的long一样大 无符号整型:uint8/16/32/64/128,uint:和C语言中的unsigned long一样大 浮点数:float16/32/64,float,longfloat:默认为双精度float64,longfloat精度大小与系统有关 复数:complex64/128,complex,longconplex:默认为complex128,即实部虚部都为双精度 字符串:string,unicode:可以使用表示一个4字节字符串的数组 对象:object:数组中可以使用任意值 时间:datetime64,timedelta64
1、np.asarray()
a=np.array([1,2,3]) np.asarray(a,dtype=float)
2、ndarray.astype(类型)
##astype方法返回一个新数组 a=np.array([1,2,3]) a.astype(float)astype引用不会对原数组产生影响4、数组操作 1、数组排序 1)np.sort(ndarray)
##对评分人数排序 np.sort(mv_num) mv_num ##sort函数不改变原数组2)np.argsort(ndarray)
argsort返回从小到大的排列在数组中的索引位置 order=np.argsort(mv_num)2、数学操作 1、np.sum(ndarray)和 2、ndarray.max()最大值 3、ndarray.min()最小值 4、ndarray.mean()均值 5、ndarray.std()标准差 6、ndarray.var()方差 7、ndarray.cov()相关系数矩阵 5、数组形状 1)ndarray.shape() 2)ndarray.reshape(形状) 6、装置T/transpose()
ndarray.T ndarray.transpose()7、数组连接 1、concatenate((a0,a1,a2),axis=0)
concatenate((a0,a1,...,an),axis=0) axis=0代表往跨行(down),而axis=1代表跨列(across) 使用0值表示沿着每一列或行标签索引值向下执行方法 使用1值表示沿着每一行或者列标签模向执行对应的方法 注意:这些数组要用()包括到一个元组中去。 除了给定的轴外,这些数组其他轴的长度必须是一样的。 x=np.array([[0,1,2],[10,11,12]]) y=np.array([[50,51,51],[60,61,62]]) print(x.shape,y.shape)2、vstack 沿着第一维连接
np.vstack((x,y))3、hstack 沿着第二维连接
np.hstack((x,y))4、dstack 沿着第三维连接
np.dstack((x,y))8、numpy内置函数 1)np.abs(ndarray)
绝对值
2)np.exp(ndarray)指数
3)np.median(ndarray)中值
4)np.cumsum(ndarray)累计和
5)mp.cumprod()累计积
6)np.argmin()返回最小值元素的小标
7)np.argmax()返回最大值元素的下标
8)np.sort()按照不同轴,进行元素排序
9)np.unique()计算数组元素唯一值
10)np.intersect1d()计算两个数组的交集
11)np.union1d()计算两级数组的并集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XiTUmRkF-1640918831802)(/483f0c09911c491193dc75533967b5a6.png)]
12)np.percentile(参数)np.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear’, keepdims=False)
计算分位数
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。
| 参数 | 说明 |
|---|---|
| a | 输入数组 |
| q | 要计算的百分位数,在 0 ~ 100 之间 |
| axis | 沿着它计算百分位数的轴 |
| keepdims | bool是否保持维度不变 首先明确百分位数:第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。 |
percentile百分位 #计算 的最小值、第 25 个百分位数、中位数、第 75 个和最大值ser。 state = np.random.RandomState(100) ser = pd.Series(state.normal(10, 5, 25)) # Solution np.percentile(ser, q=[0, 25, 50, 75, 100])



