前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >挑战NumPy100关,全部搞定你就NumPy大师了 | 附答案

挑战NumPy100关,全部搞定你就NumPy大师了 | 附答案

作者头像
AI算法与图像处理
发布2019-09-17 10:40:01
4.9K0
发布2019-09-17 10:40:01
举报
文章被收录于专栏:AI算法与图像处理

来源:知乎用户 靳伟 本文仅用于学习交流分享如有侵权请联系删除

原作者: 2016 Nicolas P. Rougier MIT协议 翻译版权归我所有

此合集旨在于为NumPy新老用户提供快速参考和一些练习。这些练习题主要来自于NumPy邮件组,StackOverflow和NumPy文档. 答案在最后面


问题开始:

  1. 使用名称np导入numpy包 (★☆☆)
  2. 打印出numpy版本号和配置信息 (★☆☆)
  3. 创建一个空向量, 尺寸为10 (★☆☆)
  4. 查出一个数组占用的内存体积 (★☆☆)
  5. 如何使用命令行来获得numpy中add这个函数的文档? (★☆☆)
  6. 创建一个大小为10的空向量,但第五个值为1 (★☆☆)
  7. 创建一个值为从10到49的向量[10,11,12...49] (★☆☆)
  8. 反转一个向量(第一个元素变为最后一个) (★☆☆)
  9. 创建一个3x3矩阵,其值范围为0到8 (★☆☆)
  10. 从[1,2,0,0,4,0]中查找出所有非零元素 (★☆☆)
  11. 创建一个 3 * 3单位矩阵 (★☆☆)
  12. 使用随机值创建一个 $333$ 数组(★☆☆)
  13. 使用随机值创建一个10x10数组,并找出其最小值和最大值 (★☆☆)
  14. 创建一个大小为30的随机向量并找到平均值 (★☆☆)
  15. 创建一个2维数组,边框元素都为1,内部元素都为0 ; 如下图所示(★☆☆)

16. 如何在一个既有数组周围添加边框(用0填充) (★☆☆)

17. 下方表达式的结果是什么? (★☆☆)

代码语言:javascript
复制
0 * np.nan
np.nan == np.nan
np.inf > np.nan
np.nan - np.nan
np.nan in set([np.nan])
0.3 == 3 * 0.1

18. 创建一个5x5矩阵, 其对角线下方的数值正好是1,2,3,4 (★☆☆)

19. 创建一个8x8矩阵并用棋盘图案填充它 (★☆☆)

20. 假设有一个(6,7,8)形状的三维数组,那么其中第100个元素的索引(x,y,z)是什么?

21. 使用tile函数创建棋盘格8x8矩阵 (★☆☆)

22. 把一个5x5随机矩阵归一化 (★☆☆)

23. 创建一个自定义dtype,用这个数据类型可以将颜色描述为四个无符号字节(RGBA)(★☆☆)

24. 5x3矩阵乘以3x2矩阵(实矩阵乘积) (★☆☆)

25. 给定一维数组,所有在3到8之间的元素都变成其负数(正->负, 负->正). (★☆☆)

26. 这段脚本的输出是什么?(★☆☆)

代码语言:javascript
复制
# Author: Jake VanderPlas

print(sum(range(5),-1))
from numpy import *
print(sum(range(5),-1))
  1. 27. 设有整数向量Z,这些表达式中的哪些是合法的(★☆☆)
代码语言:javascript
复制
Z**Z
2 << Z >> 2
Z <- Z
1j*Z
Z/1/1
Z<Z>Z

28. 以下表达式的结果是什么?

代码语言:javascript
复制
np.array(0) / np.array(0)
np.array(0) // np.array(0)
np.array([np.nan]).astype(int).astype(float)

29. 如何让一个浮点类型数组里面的值全部取整? (★☆☆)

30. 如何在两个数组之间找到相同的值? (★☆☆)

31. 如何忽略所有的numpy警告(真正干活的时候不推荐这么干哈)?? (★☆☆)

32. 以下表达式为真吗?(★☆☆)

代码语言:javascript
复制
np.sqrt(-1) == np.emath.sqrt(-1)

33. 如何获取昨天,今天和明天的日期? (★☆☆)

34. 如何获得与2016年7月里的所有日期? (★★☆)

35. 如何原地计算 ((A+B)*(-A/2)) (不做copy动作)? (★★☆)

36. 使用5种不同的方法提取一个随机数组里的整型数据部分 (★★☆)

37. 创建一个5x5矩阵,行值从0到4 (★★☆)

38. 已知一个生成器函数, 可以生成10个整数. 用它来构建数组 (★☆☆)

39. 创建一个大小为10的向量,值为0到1的小数(不包含0和1) (★★☆)

40. 创建一个大小为10的随机向量并对其进行排序 (★★☆)

41. 如何比np.sum更快地对一个小数组求和?(★★☆)

42. 设有两个随机数组A和B,检查它们是否相等 (★★☆)

43. 使数组不可变(只读) (★★☆)

44. 设有一个随机10x2矩阵, 其中的值代表笛卡尔坐标,现需将它们转换为极坐标 (★★☆)

45. 创建大小为10的随机向量,并将最大值替换为0 (★★☆)

46. 创建一个结构化数组,其x和y坐标覆盖[0,1] x [0,1]区域 (★★☆)

47. 打印每个numpy标量类型的最小和最大可表示值 (★★☆)

48. 如何打印数组的所有值?(★★☆)

50. 如何在向量中找到最接近的值(给定标量)?(★★☆)

51. 创建一个表示位置(x,y)和颜色(r,g,b)的结构化数组(★★☆)

52. 设有一个(100,2)的随机向量, 每组值代表一个坐标, 求点与点之间的距离 (★★☆)

53. 如何就地将float(32位)数组转换为整型(32位)数组?

54. 如何读取以下文件?? (★★☆)

代码语言:javascript
复制
1, 2, 3, 4, 5
6,  ,  , 7, 8
 ,  , 9,10,11

55. 什么东西与numpy数组的枚举等价?(★★☆)

56. 生成一个通用的二维高斯型数组 (★★☆)

57. 如何将p个元素随机放置在二维数组中 (★★☆)

58. 减去矩阵每行的均值 (★★☆)

59. 如何按第n列排序数组?(★★☆)

60. 如何判断一个二维数组里是否有空列? (★★☆)

61. 有一个给定值, 从数组中找出最接近的值 (★★☆)

62. 设有两个形状为(1,3)和(3,1)的数组,如何使用迭代器计算它们的总和?(★★☆)

63. 创建一个具有name属性的数组类(★★☆)

64. 设有一个给定的向量,如何让每个能被第二个向量索引的元素加1(注意重复索引的情况)?(★★★)

65. 如何根据索引列表(I)将向量(X)的指定元素转移到到数组(F)?(★★★)

66. 设有一个(dtype = ubyte)的(w,h,3)图像,计算内部不同颜色的数量(★★★)

67. 设有一个四维数组,如何一次获取最后两个轴上元素的总和?(★★★)

68. 设有一个单一维度的向量D, 如何计算D的一个子集的平均值 (该子集使用一个和D相同大小的向量S来存子集元素的索引? (★★★)

69. 如何获得两个向量的点积? (★★★)

点积就是两个向量对应位置一一相乘后求和的操作,最后结果是一个标量,是一个实数值。 两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为: a·b = a1b1 + a2b2 + …… + anbn。 使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为: a·b=a^T*b ,这里的a^T指示矩阵a的转置

70. 设有考虑向量A [1,2,3,4,5],构建一个新向量, 在A的每个值之间插入3个连续零? (★★★)

71. 设有一个维度(5,5,3)的数组, 如何与维度(5,5)的数组相乘? (★★★)

72. 如何让数组里面的两行互换? (★★★)

73. 设有10个三元组(例如[x1, y1, z1]), 每个三元组代表一个三角形. 这些三角形可能还有共同的顶点. 现在需要找出组成这10个三角形的所有线段的集合(还要去重哦) (★★★)

74. 设有一个bincount数组C, 请生成一个数组A, 使得np.bincount(A) == C? (★★★)

解释一下什么叫bincount

代码语言:javascript
复制
import numpy as np
# x里最大的数为10,那么它的索引值为0到10, 因此bin的数量为11
x = np.array([1, 1, 1, 6, 4, 4, 0, 0, 10])
# 0出现了2次,1出现了3次......10出现了1次......
print(np.bincount(x))
#因此,输出结果为:[2 3 0 0 2 0 1 0 0 0 1]

# 我们可以看到x中最大的数为18,那么它的索引值为0到18, 因此bin的数量为19
x = np.array([18, 10, 2, 10, 4, 1])
# 0出现了0次,索引1出现了1次......索引10出现了2次......
print(np.bincount(x))
#输出结果为:[0 1 1 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 1]

75. 如何使用数组上的滑动窗口计算平均值?(★★★)

76. 设有一个一维数组Z,请构建一个二维数组,其第一行为(Z [0],Z [1],Z [2]),每个后续行都要移1单位(最后一行应为(Z [ -3],Z [-2],Z [-1]) (★★★)

77. 如何反转一个布尔值(true->false或false->true), 或改变浮点值前面的正负号(正浮点数变成负浮点数, 或负浮点数变正浮点数)? (★★★)

78. 设有两组的 点 数据, 这些点 两两可以构建成一个线段. 同时设有一个点p, 如何计算从p到每个线段的垂直距离?(★★★)

下图为一个样例

79. 设有两组的 点 数据, 这些点 两两可以构建成一个线段. 同时设有一系列点P, 如何计算从P[j]到每个线段的垂直距离? (★★★) 可参考上一道题

80. 设有一个任意数组,编写一个函数,以给定元素为中心, 提取具有固定形状的子部分(必要时可以用固定值来做填充)(★★★)

81. 设有一个Z = [1,2,3,4,5,6,7,8,9,10,11,12,13,14], 求一个数组R = [[1,2,3,4], [2,3,4,5], [3,4,5,6], ..., [11,12,13,14]]? (★★★)

82. 求一个矩阵的秩 (★★★)

秩(RANK), 我们知道线性代数中的矩阵, 有一种含义就是代表一个方程组, 矩阵的秩就是这个方程组中那些原有的成员的数量

83. 如何找出一个数组里出现次数最多的元素?

84. 从一个随机的10x10矩阵中提取所有连续的3x3块(★★★)

85. 创建一个二维数组子类,使Z [i,j] == Z [j,i] (★★★)

86. 设有P个矩阵, 形状为(n,n); 以及p个向量, 形状为(n,1). 问题是, 如何一次就算出p矩阵乘积之和(结果的形状应该是(n,1)) (★★★)

87.设有一个16x16的数组, 如何获得分块加总 (每个块都是4* 4)? (★★★)

88. 如何使用numpy数组实现the Game of Life?(★★★)

89. 如何获取一个数组里面前N大 (the largest n) 的元素? (★★★)

90. 给定任意数量的向量,请用它们构建笛卡尔积(每个项的每个组合)(★★★)

91. 如何使用一个常规数组创建一个记录数组(record array)? (★★★)

92. 设有一个很大的向量 Z, 求Z的3次幂(至少尝试3种不同的方法) (★★★)

93. 设有两个数组A和B, A的形状(8,3), B的形状是(2,2). 请找出A的某些行, 该行内包含B的整行元素(不在意元素顺序). (★★★)

94. 设有一个10x3矩阵,请找出其中数值不完全相等的行 (e.g. [2,2,3]) (★★★)

95. 将int的向量转换为二元矩阵来表示(★★★)

96. 设有一个二维数组,如何提取值和其他行都不同的行?(★★★)

97. 设有两个向量A和B, 请写出AB求inner, outer, sum和mul运算的爱因斯坦求和约定(einsum)等效形式. (★★★)

注: 关于einsum, 可以来这里学习

98. 设有两个矢量(X,Y)描述的一条路径,如何使用等距样本法对其进行采样

99. 给定整数n和2维数组X,从X中选择可以解释为具有n度的多项分布的行,即,仅包含整数并且总和为n的行。(★★★)

100. 计算一个1维数组X的平均值, 要求使用自展法求95%的置信区间. (即,对数组重复N次采样, 每次采样更换部分元素, 然后计算每个样本的平均值,最后计算均值上的百分位数) (★★★)

答案:https://aistudio.baidu.com/aistudio/projectDetail/118377

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档