NumPy进阶修炼|基础

我的公众号:早起Python

====

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

创建并查看数据

首先导入并查看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 数组中的一些重要的基础属性有了一定了解之后我们来学习如何访问/修改数据

访问并修改数据

我们重新创建一个数组

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

 

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

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

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

也可以修改一整列数据👇

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

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

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

结束语

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

posted @ 2020-04-22 10:43  刘早起  阅读(194)  评论(0编辑  收藏  举报