Numpy的数据核心

2018-11-27  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读