文科生学Python系列7: Numpy数组/索引和切片

第四课:本课内容:

• 0. 导入 NumPy 包

• 1. 创建 NumPy 数组

• 2. 索引和切片

• 3. 读取文件

• 4. 布尔型索引

• 5. 数组的运算

• 6. 常用函数举例

NumPy 是 Numerical Python 的简称,是 Python 科学计算的核心包,也是高性能科学计算和数据分析的基础包。

numpy特性:

具备功能非常强大的多维数组

具备对整个数组进行快速运算的函数

线性代数计算 随机数生成

可集成C/C++以及Fortran等语言

Numpy数组中的元素只能是同一种数据类型

Numpy数组的运算,更简洁且高效。

 0. 导入 NumPy 包

导入Numpy包

用as语句倒入numpy包,后面用简写的 np ,就可以使用了。


1. 创建 NumPy 数组

numpy的一个重要对象(object)是 ndarray, 也称 NumPy 数组

• ndarray 是 Multidimensional Array的缩写,中文称为多(multi)维(dimensional)数组(array)。

• 数组可以存储大量数据并在其进行数学运算,我们可以使用数组在一块数据上进行操作从而避免使用循环来操作单个元素。

1-1 一维数组

一维数组

In[ 2 ] 中是把1,2,3这个列表转换成一维数组。赋值定义成 “ arr1d ”。

In[ 3 ] 区分赋值的 “ arr1d ” 类型,返回结果是一个Numpy类型的数组。

In[ 4 ] 返回值是1,代表是一个一维数组。

1-2 二维数组

二维数组

上图是把一个二维列表转换成一个二维数组,用和一维数组一样的方法。

二维数组就类似一个矩阵

• 0轴 (axis=0) 是列,也就是垂直方向

• 1轴 (axis=1) 是行,也就是水平方向

• 矩阵对于数据分析来说,是一个重要的概念,一般用列来代表观测对象的各种属性、特征,用行来记录每一个观测对象的一组测量数据

此时文科生觉得,这不是和我大学上的线性代数长得一毛一样吗🤓好像有点懂了~~

二维数组

看来Numpy中,是用 ndim 来找出数组是多少维的。第7行是可以显示整个数组的行和列是多少。能够想象可以使用的地方就是那些超级长超级宽的一堆数组里面,做一些统计之前可以先看看整个数组有多巨大,或者通过这样的定义,让后面的数据统计可以更加方便。

这里还是要说说我的看法,往往在学习一样新的东西时,开始打基础的过程挺漫长挺难熬的,毕竟几乎都是以前没有接触过的新词汇,理解了一个新的,可能昨天记下的就忘记了。这样反复发过程经常都会怀疑人生:“我他妈学这破玩意干什么?!!”

然后又成功从入门到放弃。

所以我在学习的过程之中,尽量多地去想,它能够在什么地方可以使用,使用场景是什么,要是去用的话怎么用,可以发挥什么作用。我们这些功利的人类啊,往往在这样脑补的情况下,加重了它们的重要性,于是觉得自己应该继续学下去,可以让后面的工作加快一点。催眠自己,有时候挺管用的🤗

1-3 其他快速创建数组的函数

• 一维数组

一维数组

老师说,上面这几个例子都太简单了,然后就一掠而过了😑😑😑看起来好像比较简单,能够理解。就是不知道为什么要弄未初始化的垃圾值,我告诉自己不要陷进“垃圾值”这个词里面尝试理解为什么叫做垃圾值,但是无法停止这个大脑不去想啊!

一维数组

arange是range函数的数组版,输出的值从0到9,不包括10,共十个数字。注意这里的括号,先用方括号括里面,然后外面是圆括号。我的理解是里面类似数列一样的一排元素,外面的圆括号是为了迎合数组里array这个函数,显示这组数组是array的人。

上面的11是显示一排范围内的值,而12是在一个范围内的值里面挑出满足条件的元素出来,形成一个新的数列。这个条件就是:从2开始(包括2)开始算起,每个值从2开始加2,到10(不包括10)结束。其实也就是从2到10 的偶数数列。这个公式是这样的:

 np.arange(起始值,终值(不包含终值),步长)

一维数组的随机数

创建0到1点随机数,请注意0左边是方括号,1右边是圆括号(我也不知道为什么要注意🤗就是看出来是不一样的,但是不知道为什么要有区别)

13这个例子上课的时候我就有点迷惑,难道电脑随机出来的小数点后位数都是一致的吗?看起来太整齐了,都是8位数啊!凭什么就是8?

14这个例子老师直接跳过了。。。没看懂哦,1到10的随机整数,后面的size=8 是啥?

• 二维数组

二维数组

一维数组和二维数组的区别就是行数的区别,一维的是1行,二维的是N行。

一维数组创建全0数组的语法是:

np.zeros(5)

创建一个5个0的数组;二维数组中,创建一个全0数组,语法也是一样的,只不过这里是需要设定行和列,2行3列的:

np.zeros ( (2,3) )

我又要说,注意括号了。两个圆括号。

上课的时候小伙伴问随机数组有什么用,我当时想的是:抽奖啊!像转发微博中经常会用到公证的第三方来显示公平公正公开,我猜测抽奖用的工具就是类似这样的程序。只不过别人设定的是整数的,我们上课的例子是有8位小数点的。

•  索引和切片的混用

方括号第一个参数指定要取的行位置,第二个参数指定要取得列位置,中间使用逗号隔开.

一维数组:使用[ ]运算符,类似于Python列表。

二维数组:方括号中第一个参数对应行,第二个参数对应行,中间用逗号隔开。

数组切片是原始数组的视图,也就是说数据不会被复制,任何修改都会影响到原有的数组上。

一维数组与一维数组的索引:

一维数组

一维数组 切片:

一维数组

更改数组切片后:

一维数组的切片更改

这个例子就是上面灰色区域说的 “数组切片是原始数组的视图,也就是说数据不会被复制,任何修改都会影响到原有的数组上。” 后面我们对数组进行的任何修改,都会更新此数组。它们是墙头草。。。谁最新就往哪边倒🤓

而有时候我们是需要更改数据,但是又想在后面的操作继续使用原始数据,也就是,在不更改原始数据的基础上,修改数组中的元素。这个听起来挺像word文档里面的 “另保存” 的。这个时候我们需要用到 .copy() 这个语法。

数组的新建“另保存”

一个都没少的原始数组们。而重新赋值的 arr3 是这样的:

修改数组

二维数组的索引和切片:

二维数组

和一维数组不一样的,首先就是前缀,这里是用 mat ,一维数组是用 arr ;

二维数组有一个一维数组没有的 shape,来定义限制整个数组的行和列。

获取二维数组的某一行:

▪ mat[起始行:终结行] :从起始行开始,但不包括终结行

▪ mat[起始行:] : 从起始行到最后一行

▪ mat[: 终结行] : 从第0行到终结行但不包括终结行

获取二维数组的某一行

方括号包裹元素,获取第0行。

获取二维数组的行

还是方括号,获取1-3行,不包括第三行。

• 获取二维数组的行和列

• 查看某一个元素,有两种方式:

这里的例子还是这个4*4的表格:

例子原始数据


查找第1行第3列的元素,2种方法


查找0-3行,第1列的内容


二维数组的切片

数字后面加冒号表示 从这个数字开始,直到这个数组的世界尽头!

作业4-1:

生成一个3行5列的数组,元素值从1到15排列

1 ,取出其中的第1行,第3列元素

2 ,取出其中的第2行到最后一行

3, 取出其中的第1行到第2行,第1列到最后一列

4 ,取出其中的第0行和第2行,第三列

我第一次觉得作业那么顺畅!!!!竟然都做出来了,证明这作业不难!☺️

你们看完这课程内容应该也能顺利做出来的,因为老师布置的作业几乎是把答案写在题目上了,想要把第0行当作第1行都没办法犯错🤗。

试试吧。

我做的如下,大家看看我有没有出错吧~


作业


剩余第四课的内容:导入 NumPy 包/创建 NumPy 数组/ 索引和切片

• 3. 读取文件

• 4. 布尔型索引

• 5. 数组的运算

• 6. 常用函数举例

明天继续码第四课剩余内容哟~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容