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

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,每天 8:25 送达640?wx_fmt=jpeg

来源:知乎用户 靳伟

本文仅用于学习交流分享如有侵权请联系删除

640?wx_fmt=png

原作者: 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 ; 如下图所示(★☆☆)

640?wx_fmt=png

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

640?wx_fmt=png

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

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 (★☆☆)

640?wx_fmt=png

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

640?wx_fmt=jpeg

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

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

# Author: Jake VanderPlas

print(sum(range(5),-1))
from numpy import *
print(sum(range(5),-1))
  1. 27. 设有整数向量Z,这些表达式中的哪些是合法的(★☆☆)

Z**Z
2 << Z >> 2
Z <- Z
1j*Z
Z/1/1
Z<Z>Z

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

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. 以下表达式为真吗?(★☆☆)

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. 如何读取以下文件?? (★★☆)

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
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到每个线段的垂直距离?(★★★)

下图为一个样例

640?wx_fmt=jpeg

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

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

640?wx_fmt=jpeg

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

可以点击“阅读原文”直接跳转

640?

有热门推荐?

1.

2.

加群交流

欢迎小伙伴加群交流,目前已有交流群的方向包括:AI学习交流群,目标检测,秋招互助,资料下载等等;

加群可扫描并回复感兴趣方向即可

640?wx_fmt=png
你点的每个“在看”,我都认真当成了喜欢

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值