14、python中numpy的使用

numpy是科学计算的基础库,重在数值计算,是很多科学计算库的基础库,多用于在大型多维数组执行计算。
一、数组创建
1.1、列表创建数组:a=np.array([1,2,3])##[1 2 3]
1.2、由range创建数组:a=np.array(range(10)) 等价于a=np.arange(10)
1.3、获取数组元素数据类型:a.dtype
1.4、创建数组时限制数组数据类型:a=np.array(range(10),dtype=float)
a=np.array(range(10),dtype=‘i1’)
dtype参数:i1表示1字节(8位)、int8表示8位整型,位数默认与电脑位数一致,f表示浮点数float,u表示无符号整数uint,c表示复数complex
1.5、类型转换:b=a.astype(‘i1’)等价于 b=a.astype(int8)
1.6、修改小数位数:np.round(a,2)
二、方法与运算
2.1、显示数组形状:a.shape,返回元组,(n1,)表示一维数组,(n1,n2)表示二维数组,(n1,n2,n3)表示三维数组,n1表示最外层的元素个数,n2表示次外层的,n3表示最里层的
2.2、重建数组形状:a.reshape(n1,n2) 新建一个对象
2.3、转化数组为一维数组:a.flatten()
2.4、数组与数字的运算:运算广播到数组的每个元组
2.5、数组与同一形状的数组运算:对应位置的元素相运算
2.6、数组与不同形状的数组运算:如果两个数组的后缘维度(即从末尾开始算的维度)的轴长相符或其中一方长度为1,则认为它们是广播兼容的,广播会在缺失和长度为1的维度上进行。
shape为(4,3,2)的数组:(4,3,1)、(3,2)、(3,1)、(4,1,1)数组可广播计算,(4,3)、(4,2)、(4)数组不可广播计算。
2.7、轴:(n1,n2,n3)分别表示0,1,2轴
2.8、加载数据:np.loadtxt(文件路径/字符串/产生器),可选参数dtype数据类型、delimiter分隔符、unpack是否转置,skiprows跳过前n行
2.9、转置:a.T、a.transpose()、a.swapaxes(1,0)
数据呈现的流程:反映什么结果、解决什么问题;选择呈现方式;数据如何处理;写代码

三、索引和切片
单行:a[n1]、a[n1,:]
单列:a[:,n1]
连续的多行:a[n1:n2]、a[n1:n2,:]
连续的多列:a[:,n1:n2]
不连续的多行:a[[n1,n2,n3]]、a[[n1,n2,n3],:]
不连续的多列:a[:,[n1,n2,n3]]
连续的行列交叉区域:a[n1:n2,n3:n4]
单个点:a[n1,n2]
多个点:a[[n1,n2],[n3,n4]]表示取点(n1,n3)/(n2,n4)
赋值:a[n1,n2]=n3
条件判断赋值:a[a>n1]=n2
三元运算符:np.where(a>n1,n2,n3)
a.clip(n1,n2):小于n1赋值为n1,大于n2赋值为n2,nan不会被替换

nan表示不是一个数字:np.nan,float类型,两个nan不相等(即np.nan==np.nan为False,np.nan!=np.nan为True),通过np.count_nonzero(t!=t)计算nan的个数,np.isnan(a)判断是否为nan,nan和任何值的计算都是nan

inf表示无穷:np.inf,float类型
四、其他
统计函数:axis=0在列上汇聚,axis=1在行上汇聚
a.max(axis=None)
a.min(axis=None)
a.sum(axis=None)
a.std(axis=None)
a.mean(axis=None)
np.median(t,axis=None)
np.ptp(a):极值

横向拼接:np.hstack((a1,a2))
纵向拼接:np.vstack((a1,a2))
行交换:a[[n1,n2],:]=a[[n2,n1],:]
列交换:a[:,[n1,n2]]=a[:,[n2,n1]]

获取最大值最小值位置:np.argmax(a,axis=0)、np.argmin(a,axis=1)
全0矩阵:np.zeros((n1,n2))
全一矩阵:np.ones((n1,n2))
对角线为1的方阵:np.eye(n1)
numpy.random.rand(d1,d2…,dn):生成d1-dn维0-1均匀分布生成的随机数
numpy.random.randn(d1,d2…,dn):生成d1-dn维标准正态分布生成的随机数组
numpy.random.randint(low,high,shape):生成low到high之间的整数生成随机数
numpy.random.uniform(low,high,shape):指定均匀分布生成的数组
numpy.random.normal(loc,scale,shape):指定正态分布生成的数组
numpy.random.seeds(s):随机数种子

五、用均值补充缺失值

import numpy as np
t = np.array([[  0.,   1.,   2.,   3.,   4.,   5.],
       [  6.,   7.,  np.nan,   9.,  10.,  11.],
       [ 12.,  13.,  14.,  np.nan,  16.,  17.],
       [ 18.,  19.,  20.,  21.,  22.,  23.]])

def nan_fill_colmean(t):
    for i in range(t.shape[1]):
        clm=t[:,i]
        if np.count_nonzero(clm!=clm)>0:
            clm[np.isnan(clm)]=clm[clm==clm].mean()###对切片的修改会传递到原数组
    return t
print(t)
t=nan_fill_colmean(t)
print(t)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值