my canteen
登录       注册

您现在的位置是:网站首页 > 学无止境

每日一技之numpy构造简单数据

王伟2020年4月3日194人围观
简介认识numpy并使用numpy创造一些简单的数据

认识Numpy并构造简单数据

什么是numpy

> 一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算

初识Numpy

创建数组

    import numpy as np
    a = np.array([1,2,3,4,5])
    # range这个方法大家应该很熟悉
    b = np.array(range(1,6))
    c = arrange(1,6)
    # res: array([1, 2, 3, 4, 5])
    # arange([start,] stop[, step,], dtype=None)
    #三个结果是完全相同的 但要注意第三种的写法,可以理解为b的变形。
    type(a) # res: numpy.ndarray
    a.dtype # res: dtype('int32')
    # type是创建的数组类型 那dtype又是什么呢?就是数组里面值的类型

    d = np.array([1,0,1,0],dtype=np.bool)
    # 我们也可以这样写 结果是一样的
    d = np.array([1,0,1,0],dtype="?")
    # res : array([ True, False,  True, False])
    # 当我们需要其他类型的数据时
    d.astype('i8')  # 或者使用int64都可
    # res : array([1, 0, 1, 0], dtype=int64)
    # 我们不光可以转换数组值得类型 我们还可以转换数组形状1->2
    d.reshape((2,2))
    # res : 
        array([[ True, False],
              [ True, False]])
    # 很神奇的就变成了一个二维数组
    # 值得注意的是一维数组转换成二维数组必须符合2*2=len(b) 
    # 一共四个数据非要转换成2*3 那它只能说一句臣妾做不到

当然我们还有其他创建np.array的方法

    [i for i in range(0 , 20 , 2)]
    # res :[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    # np.arange也可以使用这种取步长的方法
    np.arange(0, 20, 2)
    # res : array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
    # 当然我还有一个方法linspace 和取步长大同小异
    linspace(start, stop, count)
    np.linspace(0, 20, 11) # 这种方法构造的数组为浮点数
    # res: array([ 0.,  2.,  4.,  6.,  8., 10., 12., 14., 16., 18., 20.])
    # 创建全0和全1数组
    np.zeros(10)
    # res : array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
    np.zeros(10).dtype # res: dtype('float64')
    # 如果想要int类型该怎么办呢?
    np.ones((3,5), dtype=int)
    # res :  
        array([[1, 1, 1, 1, 1],
               [1, 1, 1, 1, 1],
               [1, 1, 1, 1, 1]])
    # 我就喜欢全666的感觉怎么办呢?
    np.full(shape=(3, 5),fill_value=666,dtype = float)
    # res :
        array([[666., 666., 666., 666., 666.],
               [666., 666., 666., 666., 666.],
               [666., 666., 666., 666., 666.]])

    # 在学习numpy时 由于我们缺少数据,通常使用np.random下的一些方法为我们创建一些随机的简单数据
    # random.randint(start, stop, size)
    # np.random() 和 python中 random模块很相似,就是随机生成一些数据
    np.random.randint(1, 10)
    # res: 6
    np.random.randint(1, 10, 10)
    # res: array([4, 7, 1, 7, 8, 6, 6, 5, 3, 7])
    np.random.randint(1, 10, size = (3, 5))
    # res:
        array([[2, 6, 9, 3, 9],
               [3, 4, 9, 1, 2],
               [5, 1, 8, 1, 8]])
    # random.random(size) 随机产生0-1之间的浮点数
    e = np.random.random(5) 
    # res :array([0.70062346, 0.72135256, 0.38477089, 0.03886895, 0.28736515])
    # 但是有时候浮点数太长,不方便观察。我们需要保留固定位数的小数
    e.round(2)
    # res : array([0.09, 0.39, 0.53, 0.35, 0.43])
    # random.normal(loc,scale,size)
    # loc:此概率分布的均值(对应着整个分布的中心centre)
    # scale:此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
    # size:默认为None,只输出一个值
    np.random.normal(0, 1, (3, 5))
    # res :
        array([[-0.34538839,  0.23629941, -1.05063395, -0.85718042,  0.1301889 ],
               [-0.1623024 ,  1.58267995,  1.46903844,  0.74576932,  0.85396801],
               [-1.71713293,  0.34960112,  0.24804527, -0.22903586, -0.29487963]])

Numpy构造出来的数据大多数都为我们练习操作使用,并没有实际意义,感兴趣的可以自己尝试其他构造数据的方法

路漫漫其修远兮,我将上下而求索。


文章评论

来说句话吧.... 共有评论数:0条


微信二维码 博主微信 qq二维码 博主QQ
177****8743
7*24小时电话