NumPy 数据分析练习

Numpy练习的目标仅作为学习numpy的参考,并让你脱离基础性的NumPy使用。这些问题有4个级别的难度,其中L1是最容易的,L4是最难的。

Numpy教程第2部分:数据分析的重要函数。图片由安娜贾斯汀卢布克拍摄。

如果你想快速进阶你的numpy知识,那么numpy基础知识高级numpy教程可能就是你要寻找的内容。

**更新:**现在有一套类似的关于pandas的练习。

NumPy数据分析问答

1、导入numpy作为np,并查看版本

**难度等级:**L1 **问题:**将numpy导入为 np 并打印版本号。 答案:

你必须将numpy导入np,才能使本练习中的其余代码正常工作。

要安装numpy,建议安装anaconda,里面已经包含了numpy。

2、如何创建一维数组?

**难度等级:**L1 **问题:**创建从0到9的一维数字数组

期望输出:

答案:

3. 如何创建一个布尔数组?

**难度等级:**L1

**问题:**创建一个numpy数组元素值全为True(真)的数组

答案:

4. 如何从一维数组中提取满足指定条件的元素?

**难度等级:**L1

**问题:**从 arr 中提取所有的奇数

给定:

期望的输出:

答案:

5. 如何用numpy数组中的另一个值替换满足条件的元素项?

**难度等级:**L1

**问题:**将arr中的所有奇数替换为-1。

给定:

期望的输出:

答案:

6. 如何在不影响原始数组的情况下替换满足条件的元素项?

**难度等级:**L2

**问题:**将arr中的所有奇数替换为-1,而不改变arr。

给定:

期望的输出:

答案:

7. 如何改变数组的形状?

**难度等级:**L1

**问题:**将一维数组转换为2行的2维数组

给定:

期望的输出:

答案:

8. 如何垂直叠加两个数组?

**难度等级:**L2

**问题:**垂直堆叠数组a和数组b

给定:

期望的输出:

答案:

9. 如何水平叠加两个数组?

**难度等级:**L2

**问题:**将数组a和数组b水平堆叠。

给定:

期望的输出:

答案:

10. 如何在无硬编码的情况下生成numpy中的自定义序列?

**难度等级:**L2

**问题:**创建以下模式而不使用硬编码。只使用numpy函数和下面的输入数组a。

给定:

期望的输出:

答案:

11. 如何获取两个numpy数组之间的公共项?

**难度等级:**L2

**问题:**获取数组a和数组b之间的公共项。

给定:

期望的输出:

答案:

12. 如何从一个数组中删除存在于另一个数组中的项?

**难度等级:**L2

**问题:**从数组a中删除数组b中的所有项。

给定:

期望的输出:

答案:

13. 如何得到两个数组元素匹配的位置?

**难度等级:**L2

**问题:**获取a和b元素匹配的位置。

给定:

期望的输出:

# > (array([1, 3, 5, 7]),)

答案:

14. 如何从numpy数组中提取给定范围内的所有数字?

**难度等级:**L2

**问题:**获取5到10之间的所有项目。

给定:

期望的输出:

答案:

15. 如何创建一个python函数来处理scalars并在numpy数组上工作?

**难度等级:**L2

**问题:**转换适用于两个标量的函数maxx,以处理两个数组。

给定:

期望的输出:

答案:

16. 如何交换二维numpy数组中的两列?

**难度等级:**L2

**问题:**在数组arr中交换列1和2。

给定:

答案:

17. 如何交换二维numpy数组中的两行?

**难度等级:**L2

**问题:**交换数组arr中的第1和第2行:

给定:

答案:

18. 如何反转二维数组的行?

**难度等级:**L2

**问题:**反转二维数组arr的行。

给定:

答案:

19. 如何反转二维数组的列?

**难度等级:**L2

**问题:**反转二维数组arr的列。

给定:

答案:

20. 如何创建包含5到10之间随机浮动的二维数组?

**难度等级:**L2

**问题:**创建一个形状为5×3的二维数组,以包含5到10之间的随机十进制数。

答案:

21. 如何在numpy数组中只打印小数点后三位?

**难度等级:**L1

**问题:**只打印或显示numpy数组rand_arr的小数点后3位。

给定:

答案:

22. 如何通过e式科学记数法(如1e10)来打印一个numpy数组?

**难度等级:**L1

**问题:**通过e式科学记数法来打印rand_arr(如1e10)

给定:

期望的输出:

答案:

23. 如何限制numpy数组输出中打印的项目数?

**难度等级:**L1

**问题:**将numpy数组a中打印的项数限制为最多6个元素。

给定:

期望的输出:

答案:

24. 如何打印完整的numpy数组而不截断

**难度等级:**L1

**问题:**打印完整的numpy数组a而不截断。

给定:

期望的输出:

答案:

25. 如何导入数字和文本的数据集保持文本在numpy数组中完好无损?

**难度等级:**L2

**问题:**导入鸢尾属植物数据集,保持文本不变。

答案:

26. 如何从1维元组数组中提取特定列?

**难度等级:**L2

**问题:**从前面问题中导入的一维鸢尾属植物数据集中提取文本列的物种。

给定:

答案:

27. 如何将1维元组数组转换为2维numpy数组?

**难度等级:**L2

**问题:**通过省略鸢尾属植物数据集种类的文本字段,将一维鸢尾属植物数据集转换为二维数组iris_2d。

给定:

答案:

28. 如何计算numpy数组的均值,中位数,标准差?

**难度等级:**L1

**问题:**求出鸢尾属植物萼片长度的平均值、中位数和标准差(第1列)

给定:

答案:

29. 如何规范化数组,使数组的值正好介于0和1之间?

**难度等级:**L2

**问题:**创建一种标准化形式的鸢尾属植物间隔长度,其值正好介于0和1之间,这样最小值为0,最大值为1。

给定:

答案:

30. 如何计算Softmax得分?

**难度等级:**L3

**问题:**计算sepallength的softmax分数。

给定:

答案:

31. 如何找到numpy数组的百分位数?

**难度等级:**L1

**问题:**找到鸢尾属植物数据集的第5和第95百分位数

给定:

答案:

32. 如何在数组中的随机位置插入值?

**难度等级:**L2

**问题:**在iris_2d数据集中的20个随机位置插入np.nan值

给定:

答案:

33. 如何在numpy数组中找到缺失值的位置?

**难度等级:**L2

**问题:**在iris_2d的sepallength中查找缺失值的数量和位置(第1列)

给定:

答案:

34. 如何根据两个或多个条件过滤numpy数组?

**难度等级:**L3

**问题:**过滤具有petallength(第3列)> 1.5 和 sepallength(第1列)< 5.0 的iris_2d行

给定:

答案:

35. 如何从numpy数组中删除包含缺失值的行?

**难度等级:**L3:

**问题:**选择没有任何nan值的iris_2d行。

给定:

答案:

36. 如何找到numpy数组的两列之间的相关性?

**难度等级:**L2

**问题:**在iris_2d中找出SepalLength(第1列)和PetalLength(第3列)之间的相关性

给定:

答案:

37. 如何查找给定数组是否具有任何空值?

**难度等级:**L2

**问题:**找出iris_2d是否有任何缺失值。

给定:

答案:

38. 如何在numpy数组中用0替换所有缺失值?

**难度等级:**L2

**问题:**在numpy数组中将所有出现的nan替换为0

给定:

答案:

39. 如何在numpy数组中查找唯一值的计数?

**难度等级:**L2

**问题:**找出鸢尾属植物物种中的独特值和独特值的数量

给定:

答案:

40. 如何将数字转换为分类(文本)数组?

**难度等级:**L2

**问题:**将iris_2d的花瓣长度(第3列)加入以形成文本数组,这样如果花瓣长度为:

  • Less than 3 –> ‘small’
  • 3-5 –> ‘medium’
  • ‘>=5 –> ‘large’

给定:

答案:

41. 如何从numpy数组的现有列创建新列?

**难度等级:**L2

**问题:**在iris_2d中为卷创建一个新列,其中volume是(pi x petallength x sepal_length ^ 2)/ 3

给定:

答案:

42. 如何在numpy中进行概率抽样?

**难度等级:**L3

**问题:**随机抽鸢尾属植物的种类,使得刚毛的数量是云芝和维吉尼亚的两倍

给定:

答案:

方法2是首选方法,因为它创建了一个索引变量,该变量可用于取样2维表格数据。

43. 如何在按另一个数组分组时获取数组的第二大值?

**难度等级:**L2

**问题:**第二长的物种setosa的价值是多少

给定:

答案:

44. 如何按列对2D数组进行排序

**难度等级:**L2

**问题:**根据sepallength列对虹膜数据集进行排序。

给定:

答案:

45. 如何在numpy数组中找到最常见的值?

**难度等级:**L1

**问题:**在鸢尾属植物数据集中找到最常见的花瓣长度值(第3列)。

给定:

答案:

46. 如何找到第一次出现的值大于给定值的位置?

**难度等级:**L2

**问题:**在虹膜数据集的petalwidth第4列中查找第一次出现的值大于1.0的位置。

答案:

47. 如何将大于给定值的所有值替换为给定的截止值?

**难度等级:**L2

**问题:**从数组a中,替换所有大于30到30和小于10到10的值。

给定:

答案:

48. 如何从numpy数组中获取最大n值的位置?

**难度等级:**L2

**问题:**获取给定数组a中前5个最大值的位置。

答案:

49. 如何计算数组中所有可能值的行数?

**难度等级:**L4

**问题:**按行计算唯一值的计数。

给定:

期望的输出:

输出包含10列,表示从1到10的数字。这些值是各行中数字的计数。 例如,cell(0,2)的值为2,这意味着数字3在第一行中恰好出现了2次。

答案:

50. 如何将数组转换为平面一维数组?

**难度等级:**L2

**问题:**将array_of_arrays转换为扁平线性1d数组。

给定:

期望的输出:

答案:

51. 如何在numpy中为数组生成单热编码?

**难度等级:**L4

**问题:**计算一次性编码(数组中每个唯一值的虚拟二进制变量)

给定:

期望输出:

答案:

52. 如何创建按分类变量分组的行号?

**难度等级:**L3

**问题:**创建按分类变量分组的行号。使用以下来自鸢尾属植物物种的样本作为输入。

给定:

期望的输出:

# > [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 7]

答案:

53. 如何根据给定的分类变量创建组ID?

**难度等级:**L4

**问题:**根据给定的分类变量创建组ID。使用以下来自鸢尾属植物物种的样本作为输入。

给定:

期望的输出:

答案:

54. 如何使用numpy对数组中的项进行排名?

**难度等级:**L2

**问题:**为给定的数字数组a创建排名。

给定:

期望输出:

答案:

55. 如何使用numpy对多维数组中的项进行排名?

**难度等级:**L3

**问题:**创建与给定数字数组a相同形状的排名数组。

给定:

期望输出:

答案:

56. 如何在二维numpy数组的每一行中找到最大值?

**难度等级:**L2

**问题:**计算给定数组中每行的最大值。

给定:

答案:

57. 如何计算二维numpy数组每行的最小值?

**难度等级:**L3

**问题:**为给定的二维numpy数组计算每行的最小值。

给定:

答案:

58. 如何在numpy数组中找到重复的记录?

**难度等级:**L3

**问题:**在给定的numpy数组中找到重复的条目(第二次出现以后),并将它们标记为True。第一次出现应该是False的。

给定:

期望的输出:

答案:

59. 如何找出数字的分组均值?

**难度等级:**L3

**问题:**在二维数字数组中查找按分类列分组的数值列的平均值

给定:

理想的输出:

答案:

60. 如何将PIL图像转换为numpy数组?

**难度等级:**L3

**问题:**从以下URL导入图像并将其转换为numpy数组。

答案:

61. 如何删除numpy数组中所有缺少的值?

**难度等级:**L2

**问题:**从一维numpy数组中删除所有NaN值

给定:

期望的输出:

答案:

62. 如何计算两个数组之间的欧氏距离?

**难度等级:**L3

**问题:**计算两个数组a和数组b之间的欧氏距离。

给定:

答案:

63. 如何在一维数组中找到所有的局部极大值(或峰值)?

**难度等级:**L4

**问题:**找到一个一维数字数组a中的所有峰值。峰顶是两边被较小数值包围的点。

给定:

期望的输出:

其中,2和5是峰值7和6的位置。

答案:

64. 如何从二维数组中减去一维数组,其中一维数组的每一项从各自的行中减去?

**难度等级:**L2

**问题:**从2d数组a_2d中减去一维数组b_1D,使得b_1D的每一项从a_2d的相应行中减去。

期望的输出:

答案:

65. 如何查找数组中项的第n次重复索引?

**难度等级:**L2

**问题:**找出x中数字1的第5次重复的索引。

答案:

66. 如何将numpy的datetime 64对象转换为datetime的datetime对象?

**难度等级:**L2

**问题:**将numpy的datetime64对象转换为datetime的datetime对象

答案:

67. 如何计算numpy数组的移动平均值?

**难度等级:**L3

**问题:**对于给定的一维数组,计算窗口大小为3的移动平均值。

给定:

答案:

68. 如何在给定起始点、长度和步骤的情况下创建一个numpy数组序列?

**难度等级:**L2

**问题:**创建长度为10的numpy数组,从5开始,在连续的数字之间的步长为3。

答案:

69. 如何填写不规则系列的numpy日期中的缺失日期?

**难度等级:**L3

**问题:**给定一系列不连续的日期序列。填写缺失的日期,使其成为连续的日期序列。

给定:

答案:

70. 如何从给定的一维数组创建步长?

**难度等级:**L4

**问题:**从给定的一维数组arr中,利用步进生成一个二维矩阵,窗口长度为4,步距为2,类似于 [[0,1,2,3], [2,3,4,5], [4,5,6,7]..]

给定:

期望的输出:

答案:

未完待续…

文章出处

由NumPy中文文档翻译,原作者为 machinelearningplus.com,翻译至:https://www.machinelearningplus.com/python/101-numpy-exercises-python/