python输入n×n的矩阵_70个NumPy练习:在Python下一举搞定机器学习矩阵运算

原标题:70个NumPy练习:在Python下一举搞定机器学习矩阵运算

d7516a7e0f2145e5a178b00f66e6c310.gif

翻译| 王柯凝

责编 | suisui

【导读】Numpy是一个开源的Python科学计算库,专用于存储和处理大型矩阵,相比Python自身的嵌套列表结构要高效很多,是数据分析、统计机器学习的必备工具。Numpy还是深度学习工具Keras、sk-learn的基础组件之一。

此处的70个numpy练习,可以作为你学习numpy基础之后的应用参考。练习难度分为4层:从1到4依次增大。

快来试试你的矩阵运算掌握到了什么程度:

1.导入模块numpy并以np作为别名,查看其版本

难度:1

问题:导入模块numpy并以np作为别名,打印版本号

答案:



7ba2f0d1da854c888a5a3ef00eadfede.png



你必须将模块numpy导入,以np命名,练习中的其他代码才能正常运行。

安装numpy,建议使用anaconda提供的安装方案。

anaconda链接:https://www.anaconda.com/download/

2.如何创建一个一维数组?

难度:1

问题:创建一个含有从0到9数字的一维数组,并输出



答案:



81c16851ab9246eab7fe8da5f3e569bb.png



3.如何创建布尔数组?

难度:1

问题:创建一个3×3的所有值为True的numpy数组。

答案:



dfc3a86c76e145b4a7ad60f5446eafb2.png



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

难度:1

问题:从arr数组中提取所有奇数元素。

输入:



输出:



答案:



e68f439334304bb5910a08d61f1a514e.png



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

难度:1

问题:用-1替换arr数组中所有的奇数。

输入:



输出:



答案:



b7384d670d2540d980a0ceeaa8c77bc1.png



6.如何替换满足条件的元素而不影响原始数组?

难度:2

问题:将arr数组中的所有奇数替换为-1而不更改arr数组

输入:



输出:



dc411bda1b684227825e097500a9ce72.png



答案:



40680963f2bf4442bbf9d54f9258e5e2.png



7.如何重塑数组?

难度:1

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

输入:



1872b438c6834290b6369c59a92d52b1.png



输出:



37abc96eb6124821bf482f24af7b67f7.png



答案:



a044dfd189c144caa27460da438dace0.png



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

难度:2

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

输入:



4d748cef48b5488a9419c64425811af6.png



输出:



cd9aede14c284c31a7fd1af5973b5c18.png



答案:



3991573eb4744938a7afc8bdc365cd03.png



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

难度:2

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

输入:



9940cf3d6882479b9afcfd1ad0bc3171.png



输出:



42477a4d476f486f9a87018757d49dfe.png



答案:



c9e123351c6a4620b0e257a92c0aed3d.png



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

难度:2

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

输入:



输出:



答案:



658a9683b43e4297a464ba8f331aff0d.png



11.如何获得两个python numpy数组之间的共同元素?

难度:2

问题:获取数组a和b之间的共同元素。

输入:



cda5bd4a786c4770a157579ee5372ab9.png



输出:



答案:



362b80740419410a875e25032a1cef1f.png



12.从一个数组中删除存在于另一个数组中的元素?

难度:2

问题:从数组a中删除在数组b中存在的所有元素。

输入:



5dc28a7a244d4b0f873483ea01c217d6.png



输出:



答案:



e09454f79eb34439bf1050957d8bc4d1.png



13.获取两个数组元素匹配的索引号。

难度:2

问题:获取数组a和b的元素匹配的索引号

输入:

e4647bb68a724e39bbcdb9b1d4b5cae6.png

输出:



答案:



b3dc596795fa43bdbf249f81a292741d.png



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

难度:2

问题:从数组a提取5到10之间的所有元素。

输入:



输出:



答案:



606d0a338b6f4ae594dd8d8de4a2bfde.png



15.如何将处理标量的python函数在numpy数组上运行?

难度:2

问题:将处理两个标量函数maxx在两个数组上运行。

输入:



10b7f01f11894020aab6f78a7d32b27d.png



输出:



6b14521fef6445a7b1a81477e8a60856.png



答案:



9fae16846e2e47f09e6d7d5ccf3e6347.png



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

难度:2

问题:交换数组arr中的第1列和第2列。



8027f64fb92449179f9dd2d366dfca54.png



答案:



d264c5607ff7416aa61ed07ed723b712.png



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

难度:2

问题:在数组arr中交换第1行和第2行。



7cdcd3c4c7e44c06886a02266bd6a4b2.png



答案:



f3e9c0a3581846489e556695f8c6edbb.png



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

难度:2

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



b05e061fb3ca4a9fbc700e2bc9f6a43a.png



答案:



ba40bb4fc2c64872aff2a5a77889d12e.png





16d3625b1cc04167ac2174229b84ae2b.png



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

难度:2

问题:颠倒二维数组arr的列。



2944c53d24304b8c84924b091a5066d7.png



答案:



f4325bced1c14b8cbe0cb631e9e7767d.png



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

难度:2

问题:创建一个5×3的二维数组,以包含5到10之间的随机浮点数。

答案:



bcb47e333e8e4b71b6277523ffc41c5a.png



21.打印python numpy数组并保留3位小数?

难度:1

问题:打印或显示numpy数组rand_arr,并三位小数。

输入:



答案:



a1a9fd79d5ab4220a1504c2dcac0a933.png



22.如何使用科学记数法(如1e10)漂亮地打印一个numpy数组?

难度:1

问题:使用科学记数法(如1e10)漂亮的打印数组rand_arr

输入:



9ddef1189bbb498cb9b550b515f75048.png



输出:



28600a41a91246e18ce2180e2f7c18fb.png



答案:



547b9a417234453897ae6313c82df9f9.png





86bc35efec744f1aaacb8d2f7c38dfa9.png



23.如何限制numpy数组输出中打印元素的数量?

难度:1

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

输入:



9a0bc10395164ed6bef9e8a09361f479.png



输出:



答案:



c4aaa43af55149ee9f3c086267f23def.png



24.如何在不截断的情况下打印完整的numpy数组?

难度:1

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

输入:



67efe1f043644727896e0fb3fef504cf.png



输出:



745afdfdff0d4b9b9b8d5dde4314374a.png



答案:



fd94f48e0a5b4ce1b412480b613e016b.png



25.如何在python numpy中导入含有数字和文本的数据集,并保持的文本完整性?

难度:2

问题:导入iris数据集并保持文本不变。

答案:



4c9d6c42601d423c83603c49878a5c32.png



由于我们想保留物种,一个文本字段,我已经把dtype设置为object。设置dtype = None,则会返回一维元组数组。

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

难度:2

问题:从上一个问题中导入的一维iris数组中提取species文本列。

输入:



7a948bf49a5b47a39b57f79c2b4544b5.png



答案:



c720718fa9884c389851575115e70a51.png



27.如何将一维元组数组转换为二维numpy数组?

难度:2

问题:通过省略species文本字段将一维iris数组转换为二维数组iris_2d。

输入:



90b285155dd84b2ab4bf7c10321030b6.png



答案:



f49bc1171bc94c27bec600570adc2d1f.png



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

难度:1

问题:找出 iris的 sepallength平均值,中位数,标准差(第1列)



d1b174172b2545db86b37d8c2999bb4b.png



答案:



68a610cddaaf4c42a831690ab3228faa.png



29.如何标准化一个数组至0到1之间?

难度:2

问题:创建一个规范化形式的iris的sepallength,其值的范围在0和1之间,最小值为0,最大值为1。

输入:



4edc1cc6d6764509888a11490adac7c8.png



答案:



8cf0dd8232c845bab7a003fcad3232b5.png



30.如何计算softmax值?

难度:3

问题:计算sepallength的softmax分数。



b4f28c5563414d4c94042a2a690a9525.png



答案:



f71c7c1d0e6245f9a00ea52f7579cfc8.png



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

难度:1

问题:找到iris的sepallength第5位和第95百分位的值。



bbdfcd7954e84d7d810e74a25739a8c3.png



答案:



fb068941aaff4899add36dd6ab302c60.png



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

难度:2

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



29eeb17eea9b456d9a00c206c954b078.png



答案:



396026533fdc47ad93cf3a9c1036fdb8.png



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

难度:2

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



a6516ee9632f4daabacdbd44f2551c18.png



答案:



2f5b483c2162425ea84ef29f064932d2.png



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

难度:3

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



536f40d093a042e6a8066425ef7ba5e1.png



答案:



800d8a27a62a42a591f3a1c78fedc742.png



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

难度:3:

问题:选择没有nan值的iris_2d数组的行。



0da747cc0e1d4cac9268a908d971caef.png



答案:



45cb6e551bee4214a535cf890652a596.png



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

难度:2

问题:在iris_2d数组中查找SepalLength(第1列)和PetalLength(第3列)之间的关系。



43408f25ec7c40989d5caa22225cf8b7.png



答案:



8695aa489b77499e96a2a278ba3c1fac.png



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

难度:2

问题:找出数组iris_2d是否有缺失的值。



5de2f9f134274b1c924c03638d100ba2.png



答案:



d6fff911259549f38e7a7041ebbd9d8f.png



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

难度:2

问题:在numpy数组中用0替换nan。



b0bef0bf066344b5927890ff836dc21c.png



答案:



b97d698abe7740298cff61bf489d0a65.png



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

难度:2

问题:找出iris的species中的唯一值及其数量。



fdc1eb0c2ebc4192a83340d45a48c91b.png



答案:



cfe15d7226124ccf97852a10c9172c86.png



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

难度:2

问题:将iris_2d的花瓣长度(第3列)组成一个文本数组,如果花瓣长度为:

bb7fbed3b9274bc795c2df309037a985.png

<3则为'小'

3-5则为'中'

'> = 5则为'大'

答案:

17a410d9830e48d0a16511eaaaa606da.png

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

难度:2

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

e357c2849c1248cc8ad3f50cd1f12960.png

答案:

73f783e4e1384257a99b0c0038d914e1.png

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

难度:3

问题:随机抽样iris的species,使setose是versicolor和virginica的数量的两倍。

87aeb53897414388bf9c1eb6e2243de1.png

答案:

ec46643f23f24d568d8ea9db1077568c.png

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

43.用另一个数组分组时,如何获得数组中第二大的元素值?

难度:2

问题:第二长的物种的最大价值是什么?

fd1ef0ff90064bfd9364c34691d9a6b0.png

答案:

6c5be1b0bc7c4c43b7e303d808a78ed8.png

44.如何按列排序二维数组?

难度:2

问题:根据sepallength列对iris数据集进行排序。

c7c887638f7140bea4386f8cdb1bc8f2.png

答案:

eb57439197ca4afe96c48e7698e822e3.png

45.如何在numpy数组中找到最频繁出现的值?

难度:1

问题:找到iris数据集中最常见的花瓣长度值(第3列)。

输入:

2d5402d4fef742318e5d636cd4fe2d69.png

答案:

62bc5c84f9454e64aa0e255787b7c3c8.png

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

难度:2

问题:查找在iris数据集的第4列花瓣宽度中第一次出现值大于1.0的位置。

fbf7688084f54454a15c016303848c4e.png

答案:

f4f67b677eaf47e2bb63134412cc8ce7.png

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

难度:2

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

输入:

db7f4e4f340e4b8eb408af6c1e258f39.png

答案:

794fc56176764145a84d3444e6cec3ab.png

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

难度:2

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

6bf6668491fa4115bde6fc8e4b0eb4f1.png

答案:

95ab357ca24d4bbdb35fbbf02f2c17c7.png

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

难度:4

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

输入:

c38892a91e8c427897e814125ee57444.png

输出:

065a6f5963d94ac6aa240d81a78ba8d6.png

输出包含10列,表示1到10之间的数字。这些值是相应行中数字数量。

例如,单元(0,2)的值为2,这意味着数字3在第一行中恰好出现2次。

答案:

153504df287b4b6486b650b32b1ce454.png

262eff536eb74877a8b39f6c15ff3589.png

e8671362693747f7b051afca9c82d25c.png

50.如何将多维数组转换为平坦的一维数组?

难度:2

问题:将array_of_arrays转换为平坦的线性一维数组。

输入:

55a1005df7f94ba88e0356bcbabbd591.png

输出:

答案:

16643ec53cbb473396736e772e06d630.png

51.如何为numpy中的数组生成独热编码?

难度:4

问题:计算独热编码。

输入:

1dafc557ed674f8ba0860f6602952b60.png

输出:

1c828a66364c4939baeef44464d193f7.png

答案:

6622d47f198b477c808769c8d8c687af.png

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

难度:3

问题:创建由分类变量分组的行号。使用iris的species中的样品作为输入。

输入:

3eb7f4caffd64324bb01050932c19477.png

输出:

答案:

4ff9787758fb4830b458d8650ed9e9c4.png

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

难度:4

问题:根据给定的分类变量创建组ID。使用以下iris的species中样品作为输入。

输入:

d53ca249eebd4712b82d6c494898bc90.png

输出:

答案:

db6d325c272d475ab0abacd479733964.png

13d33bd8bcf34873b4d293d9c34c010a.png

54.如何使用numpy排列数组中的元素?

难度:2

问题:为给定的数字数组a排序。

输入:

2f56663156c047578d845d199299fc66.png

输出:

答案:

8bb2d32eeb704d7bbc031e6a40e7c555.png

55.如何使用numpy对多维数组中的元素进行排序?

难度:3

问题:创建一个与给定数字数组a相同形式的排列数组。

输入:

c212a424ac2741a0bb6d6a73e037690b.png

输出:

f659b9b6c1d245088d117cdd48b642aa.png

答案:

39d5659688a94d94af8f6fa754b56485.png

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

难度:2

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

ec28080748224d649ae79b63aebf3164.png

答案:

addc9a710f7d47dabfa9bbf2104bc4c1.png

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

难度:3

问题:针对给定的二维numpy数组计算每行的min-max。

5de25612db19423084b0e89a71c7d677.png

答案:

cb7e4ab1aa07408da7e6f55501601d11.png

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

难度:3

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

a179137de2dc4e898d17e3853f8c7e79.png

输出:

答案:

d1602fac383c4199a94b96e2c3539157.png

59.如何找到numpy中的分组平均值?

难度:3

问题:查找由二维numpy数组中的分类列分组的数值列的平均值

输入:

d375b3a3e6d3480e8517eb256ae9a1cf.png

输出:

0548203916e84db3a521f13e1265318d.png

答案:

fbfc14909fd747b098a2aec09a4a06da.png

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

难度:3

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

URL='https://upload.wikimedia.org/wikipedia/commons/8/8b/Denali_Mt_McKinley.jpg'

答案:

d4a0267f0d59445c971ade2be36d7315.png

61.如何从一个numpy数组中删除所有缺失的值?

难度:2

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

输入:

输出:

答案:

07ff2262a8294c189a4948a2263c872d.png

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

难度:3

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

输入:

258c05fcfb39419caacc3a752b646e00.png

答案:

415fed63c39240e3bbaabf983489bd8f.png

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

难度:4

问题:在一维numpy数组a中查找所有峰值。峰值是两侧较小值包围的点。

输入:

输出:

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

答案:

a6e258aa66f242da97838acf8bcfeb81.png

64.如何从二维数组中减去一维数组,其中一维数组的每个元素都从相应的行中减去?

难度:2

问题:从二维数组a_2d中减去一维数组b_1d,使得每个b_1d项从a_2d的相应行中减去。

2a0ab55fa55d411a943ae8b9a2cf5c3a.png

输出:

108dfc4ac0564865a6867f045ab4a1d9.png

答案:

f6a4098b489e43128c06819512beb2fe.png

65.如何找到数组中第n个重复项的索引

难度:2

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

答案:

3f28164555644deb84095046aa7fb0b2.png

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

难度:2

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

62afb678034c4fcfbc642a7fcd6f0d85.png

答案:

2394e17f0ca743d18b6cb4365a75e915.png

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

难度:3

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

输入:

c58dff8a85e34031bf0d6a194e2d0dba.png

答案:

e676c65b845d42bf96b3baa22d31dce1.png

68.如何只给出起点,长度和步长来创建一个numpy数组序列?

难度:2

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

答案:

6100e0076d0e4fb399e35dee91156abe.png

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

难度:3

问题:给定一个不连续的日期数组。通过填补缺失的日期,使其成为连续的日期序列。

输入:

b96b86e67bf642ad81e4e2ccd767dcc7.png

答案:

a6e23329c7ed46a582914dcee3f73b6e.png

70.如何在给定一个一维数组中创建步长?

难度:4

问题:从给定的一维数组arr,使用步长生成一个二维数组,窗口长度为4,步长为2,如[[0,1,2,3],[2,3,4,5],[4,5,6,7]..]

输入:

6c19319adae0490ea287e7c15fa7caaa.png

输出:

7b011c89d8e841409dcd17873ca324a4.png

答案:

6cf41d272c0741e1baa716aa0998a3d8.jpeg

原文地址:

https://www.machinelearningplus.com/101-numpy-exercises-python/返回搜狐,查看更多

责任编辑:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值