numpy的基本用法(三)数组的拼接、特殊数组、nan和inf

     1、数组的拼接和裁剪

  • t.clip(10,20)把小于10的替换成10,大于20的替换成20
  • 竖直拼接,通俗讲就是一个数组在上面,另一个数组在其下面
  • 水平拼接,通俗讲就是一个数组在左边,另一个数组在其右边
  • np.vbstack(竖直拼接),np.hstack(水平拼接)
  • ###数组的拼接
    import numpy as np
    t1=np.arange(12).reshape(2,6)
    t2=np.arange(12,24).reshape(2,6)
    print(t1)
    print(t2)
    
    b=np.vstack((t1,t2))##竖直拼接
    c=np.hstack((t1,t2))##水平拼接
    print(b)
    print(c)

    2、生成特殊数组

  • 全是0的数组
  • 全是1的数组
  • 对角线是1的方阵
  • 获取某个数组的最大最小值的位置
  • ###创建一个对角线是1的正方形数组(方阵)
    e = np.eye(3)
    print(e)
    ###获取最大值和最小值的位置
    print(np.argmax(e,axis=0))##按照行数,每一行最大的索引组成的数组,本案例[0,1,2]
    print(np.argmin(e,axis=1))##按照列数,每一行最小的索引组成的数组,本案例[1,0,0]
    ##创建一个全是0的数组:
    np.zeros((3,4))
    np.ones((3,4))
    

    3、numpy中的nan和inf

  • nan(NAN,Nan):not a number表示不是一个数字
  • inf(-inf,inf):inf表示正无穷,-inf表示负无穷
  • 当我们读取本地文件为float时,如有缺失,就会出现nan
  • 当做了一个不合适的计算时(比如无穷大减去无穷大),就会出现nan
  • 如果一个数字除以0(python会直接报错),出现inf
  • nan和inf都是浮点类
  1. np.nan!=np.nan   两个nan是不相等的,效果和np.isnan()相同

     2.通过以上特性,判断数组中nan的个数

np.count_nonzero(t)##判断数组中不是nan的个数
np.count_nonzero(t!=t)
#根据两个nan是不相等的条件 判断false的个数
np.isnan()##判断是不是nan,返回的是布尔型

    3.nan和任何数计算都是nan 

np.sum(a)
np.sum(a,axis=0)
np.sum(a,axis=1)

举个例子,将有nan的数组的值替换成列均值

def fill_ndarray(t1):
  for i in range(t1.shape[1]):##遍历列
    temp_col=t1[:,i]##当前的这一列
    nan_numbers=np.count_nonzero(temp_col!=temp_col)##判断当前这一列nan的个数
    if nan_numbers!=0:#不为零,说明会这一列有nan
        temp_not_nan_col=temp_col[temp_col==temp_col]##当前一列不为nan的array
         ##选中当前为nan的位置,把值赋值为不为nan的均值
         temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
        return t1
  if __name__ == '__main__':
        t1=np.arange(12).reshape((3,4)).astype("float")
        t1[1,2:]=np.nan
        print(t1)
        t1=fill_ndarray(t1)
        print(t1)

4、numpy中的统计函数

求和t.sum(axis=None)
均值t.mean(a,axis=None)
中值np.median(a,axis=None)
最大值t.max(axis=None)
最小值t.min(axis=None)
极差np.ptp(a,axis=None)
标准差t.std(axis=None)
  • 这里的标准差除的是N而不是统计学中的N-1和N-2,反应数据地方离散程度(稳定程度)
  • axis=0说明在横轴上计算

5、numpy生成随机数

  • random.random():根据给定维度生成[0,1)之间的浮点数
  • random.randn():根据给定维度(不给维度时为单个数),产生符合标准正态分布的随机数
  • random.normal():产生可定义均值和标准差的正态分布随机数
  • random.randint(上限,下限):返回给定维度的随机整数
  • random.sample(num,3):从指定序列中随机获取指定长度的片段,原有序列不会改变,两个参数,第一个参数代表指定序列,第二个参数代表需要获取的片段长度。
  • random.choice():从序列中获取一个随机元素
  • random.seed():随机数种子 : 当设置相同的seed,每次生成的随机数相同,不设置seed,则每次会生成不同的随机数,数字一般可随意设置

numpy random官方参考文档:https://docs.scipy.org/doc/numpy/reference/routines.random.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值