Level Up!有关 Numpy的35 个实战挑战

Numpy 是 Python 中非常重要的矩阵运算库,借助它我们能方便地进行线性代数,傅里叶变换和随机数操作。我们整理了由浅入深的 35 个挑战问题,并制作成 jupyter notebook 版本,让大家可以更方便地练习 Numpy 技巧。notebook 版获取方法在文末。

挑战 1:引入 numpy 并查看 numpy 的版本。

要求:这是第一步,以后我们使用 numpy 时都将用别名 np。

挑战 2:创建数组

要求:创建一维数组,内容为从 0 到 9。

挑战 3:创建布尔数组

要求:数组大小为 3*3,全部为 True。

挑战 4:按要求抽取数组中的元素

要求:原数组为一维数组,内容为从 0 到 9,抽取出所有奇数。

挑战 5:按要求修改数组中的元素(原地修改)

要求:原数组为一维数组,内容为从 0 到 9,将所有奇数原地修改为 -1。

挑战 6:按要求修改数组中的元素(返回新数组)

要求:原数组为一维数组,内容为从 0 到 9,返回一个该数组的拷贝,其中奇数修改为 -1。

挑战 7:修改数组的形状

要求:将给定的一维数组 reshape 为二维数组,其中新数组的行数为2。

挑战 8:合并数组(列方向)

要求:将给定数组在列方向上合并。

挑战 9:合并数组(水平方向)

要求:将给定数组在水平方向上合并。

挑战 10:创建数组(进阶)

要求:不用硬编码,使用内置方法,从给定数组 a 生成数组 b。

挑战 11:返回公共元素

要求:给定两个数组,要求返回这两个数组元素的交集。

挑战 12:删除元素

要求:给定两个数组 a、b,从数组 a 中删除 b 中出现的元素。

挑战 13:找出相同元素

要求:给定两个数组 a、b,返回两数组中相同元素的下标。

挑战 14:按要求取出元素

要求:从数组中取出大于等于 5 且小于等于 10 的元素。

挑战 15:实现 max 的 numpy 版

要求:给定长度相同的数组 a、b,返回一个新数组,数组上的每一个元素为 max(a_i, b_i)。

若 pair_max 为满足要求的函数,则对于 a 和 b,期望输出如下:

挑战 16:交换二维数组的列

要求:交换数组的第一第二列。

挑战 17:交换二维数组的行

要求:交换二维数组的第一第二行。

挑战 18:将一个数组按行反序

要求:数组 arr 为二维数组,将其行反序。

挑战 19:将一个数组按列反序

要求:数组 arr 为二维数组,将其列反序。

挑战 20:创建随机数组

要求:创建一个 5*3 的数组,数组元素为 5 到 10 的随机浮点数。

挑战 21:按要求打印数组(一)

要求:数组元素输出时保留 3 位小数。

挑战 22:按要求打印数组(二)

要求:数组为小数,使用小数点的形式来打印,而不是科学记数法(如1e-4)。

挑战 23:按要求打印数组(三)

要求:打印时省略中间元素,限制显示数组元素的个数为 6。

挑战 24:加载特殊矩阵

要求:著名的 iris 数据集是包含兰花属性和种类的数据集,其中每行属性有数字和文字,用 numpy 来加载他们。

挑战 25:重定义数组的元素范围

要求:将 iris 数组集的第一个列的数据范围缩放为 0 到 1。

挑战 26:根据百分比大小返回元素

要求:返回数组中按从小到大排序,位置为 5% 和 95% 的数。

挑战 27:找出数组的缺失值

要求:数组中有多处缺失值(答案nan),找出他们的位置。

挑战 28:数组缺失值判断

要求:返回数组是否具有缺失值。

挑战 29:数组缺失值处理

要求:替换数组中的缺失值为0。

挑战 30:数组的 unique 元素

要求:返回数组中出现的所有元素集合

挑战 31:二维数组排序

要求:根据第一列排序二维数组

挑战 32:出现最频繁的元素

要求:返回数组中出现最多的元素。

挑战 33:找出数组中某元素满足第一次大于某数的下标

要求:在 iris 数据集中,返回第一个元素的下标,满足第4列属性大于1.0。

挑战 34:设定数组元素的上下限

要求:给定数组 a,将数组中大于 30 的数截断为 30,小于 10 的数截断为 10。

挑战 35:去掉所有缺失值

要求:给定一维数组 a 包含缺失值,去掉他们。

记得你的 jupyter notebook 要安装并启用 nbviewer excise2 插件哦。

本文的 Numpy 挑战题整理自 https://www.machinelearningplus.com/python/101-numpy-exercises-python/

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180502G0GLB900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券