美文网首页
Numpy的数据核心

Numpy的数据核心

作者: 淇漯草 | 来源:发表于2018-11-27 21:55 被阅读0次

    Numpy提供了高效存储和操作密集数据缓存的接口。
    先不管那些数据是如何处理的,我们只需要明白,数据是如何存储的,就够了。而知道数据如何存储,那么其相应的操作也变得非常明了。
    PS:除要点外,都是解释说明要点的,理解要点是核心,知道要点,在不看任何东西的前提条件下,能说出这个要点所包含的意义

    核心:理解Python语言中,数据是如何被存储和操作的。

    第一点、
    Python中的所有变量都是对象。

    一个特性:Python中,“任何变量”可以赋“任何值”。
    这是因为Python中的每一个数据都包含了除本数据以外的头。定义如下

    struct _longobject{
        long ob_refcnt;//引用计数,Python默默处理内存的分配和回收
        PyTypeObject *ob_type;//将变量的类型编码
        size_t ob_size;//指定接下来的数据成员的大小
        long ob_digit[1];//包含我们希望Python变量表示的实际整型值
    };
    

    第二点、
    Python中的列表,基于第一点,也是灵活的。

    这造成了巨大的空间浪费,所以为了像C语言一样,快速操作,Numpy提供相应的库。

    第三点、
    Python为解决这个问题,采用了array

    array是一个包
    array.array(列表或数据)
    如:array.array(a,[b,c,d,e]) a为类型数据码
    array形式:类型数据码 + 列表(同一数据)

    第四点、
    Numpy提供了类似于array的方法,更为简洁,好用。

    与array使用方法基本一致,但是可以使用许多方法。

    第五点
    Numpy中array提供的矩阵是array中列表中的列表。

    即array()形式,内部[]表示矩阵单个[]表示一行,即有三层形式。
    array([
    [1,2,3]
    [1,2,3]
    ])

    方法

    刚才讲述了原理,一定要搞清楚再思考方法的问题。因为方法是为原理服务的。

    方法 效果
    np.ones((row, column), dtype=?) 获得1的row*column矩阵
    np.zeros((row, column)) 获得0的row*column矩阵
    np.full((row, column), 数) 获得'数'的row*column矩阵
    np.linspace(0,1,5) 数组,0-1,五个数均匀分配(含0含1)
    np.random.random((row, column)) 获得"random"的row*column矩阵
    np.random.normal(0,1,(row, column)) 获得"u 与 标准差"的row*column矩阵
    np.random, randint(0,10,(3,4)) 获得[0,10)区间随机整型row*column数组
    np.eye(3) 获得单位矩阵(n*n)
    np.empty(3) 获得未初始化矩阵n*n

    相关文章

      网友评论

          本文标题:Numpy的数据核心

          本文链接:https://www.haomeiwen.com/subject/ncvnqqtx.html