NumPy进阶修炼|基础

纵饮孤独 提交于 2020-11-24 18:31:09

点击上方“早起Python”,关注并星标公众号

和我一起玩Python


大家好,我们接着更新NumPy专题,想学好NumPy先搞定基础,本文将细致讲解一些NumPy的基础操作,记得启动Jupyter Notebook一边敲一边学,我们开始吧


1


创建并查看数据


首先导入并查看NumPy版本,我的版本是1.17.2,由于版本不同可能有些代码写法不一样

接着我们来创建一个数组👇

当然我们可以将列表嵌套在列表中创建一个二维数组👇

接下来我们查看这两个数组的维数👇

OK,和我们预想的一样,接着我们查看数据的shape属性

这个shape不好翻译,有说是矩阵维数也有说是形状的,从结果来看a的shape属性为(3,)意思a是一维数组,有3个元素,b的shape属性为(2,3)说明b是二维数组,每行有3个元素,想一想np.array([[1,2]]).shape应该返回什么

(1,2)说明该数组是一个1行2列的二维数组,OK我们接着来查看在第一期中重点介绍的数据类型👇

可以看到,a是int64说明存储a将消耗8个字节,而在第一期我们就说过,使用NumPy的好处是可以自定义数据类型,因此我们可以指定a的数据类型为int16来减少内存占用

现在我们来看下修改前后a的大小变化(8—>2)

接着我们来获取一下数组的元素个数👇

在知道数据的每个元素大小和元素个数之后我们就可以计算ab的总内存占用,即元素个数*元素大小

可以看到存储a将消耗6个字节而存储b将消耗48个字节,不过也有现成的方法.nbytes可以直接获取

当然结果是一样的,现在我们对NumPy 数组中的一些重要的基础属性有了一定了解之后我们来学习如何访问/修改数据


2


访问并修改数据


我们重新创建一个数组

可以看到a是一个2行7列的矩阵,现在我们可以像使用list一样来访问a中的元素,比如我们提取第2行的6和2(第二行的第二个和倒数第二个元素)

当然也可以使用类似的方法访问整行/整列

还有一些其他的方法,比如每隔2个数访问一次第一行中从第二个数据到第7个数据的两种写法

在学会如何访问NumPy数组中元素之后,现在我们学习修改数组中元素,比如修改第2行第2列数据👇

也可以修改一整列数据👇

上面都是使用一维或二维的数据来示例,如果是更高维的数组操作是类似的,比如我们创建一个三维数组

我们可以使用类似的方法来访问数组中的元素

不过修改数据的时候需要保证数据维度是一致的,否则就会报错


3


结束语


OK,以上就是NumPy进阶修炼第二期的全部内容,这些基础操作你都会吗?源码将在NumPy系列完结之后给出,所以想学好NumPy的读者可以自己动手敲一遍,研究一遍。因为从我的经验来看,敲这一遍代码很有可能是你唯一一次将这些NumPy基础操作好好思考一遍。收藏起来等以后再学等着等着就忘记了更深入的操作我们下期再见,拜拜~



本周将挑两本书回馈常读与分享读者,下面是第一本👇

往期精选 (👇 猛戳可查看

用Python唱一首程序员版“惊雷”
重庆火锅哪家强,Python帮你探探店
玩转数据处理120题重制说明与下载

手把手教你使用Matplotlib绘图

NumPy进阶修炼|你真的了解NumPy吗

什么!Python还能帮你找老婆?

不就是用Python做个动态图吗?看招


先有收获,再点在看!

本文分享自微信公众号 - TechFlow(techflow2019)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!