Numpy的数据核心

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 Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 33,222评论 6 98
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,117评论 2 89
  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 10,542评论 0 18
  • 壹 张三丰自创“倚天屠龙功”,通过屠龙刀倚天剑的24字口诀将书法与武功无缝融合。修为到了仙境,举手投足都是神功。 ...
    书生慧慧子阅读 4,692评论 0 2
  • 姓名:单国英 部门:万尚安简学习会 组别:待定 【知~学习】 稻盛自传 稻盛哲学 【内容感悟分享 时间:2月2日 ...
    单国英阅读 5,465评论 0 0