大家好,又到了NumPy进阶修炼专题,其实已经断更很久了,那么在本文正式发布题目之前,先说下改动的地方,在以前的Pandas120题和NumPy热身20题中,我都是将我的答案附在每一题的后面?
这种形式的题目对于读者来说,尤其是新手朋友们,很容易被我的思路带进去,实际上不论我的pandas还是numpy的习题,每一题都有多种解法,并且我的解法有时也并不是最佳方法,所以为了让大家多一点自己思考的时间,在numpy以及后面的其他系列习题中,我将换一种方式整理习题?
就像上图一样,我将同时发布两个Notebook版本习题,一份习题单独版,一份带有我的答案的单独版本,大家可以先试着在只有习题的版本中思考,写代码,并与我的答案对比,也欢迎给我提交不一样的答案!
好了,废话不多说,我们来看今天的20题,主要将涉及到用NumPy对矩阵的一些操作!
21 数据创建
题目:创建主对角线都是5的5x5矩阵
难度:⭐
答案
result = np.diag([5,5,5,5,5])
22 数据修改
题目:交换第一列与第二列
难度:⭐⭐
答案
a = result[:, [1,0,2,3,4]]
23 数据修改
题目:交换第一行与第二行
难度:⭐⭐
答案
result[result % 2 == 1] = 666
24 数据查看
题目:判断两个矩阵是否有任何元素不同
难度:⭐⭐
答案
print((a == b).all())
25 数据计算
题目:计算两个矩阵不同元素的个数
难度:⭐⭐
答案
len(np.argwhere(a != b))
26 数据查看
题目:找到两个矩阵不同元素的位置
难度:⭐⭐
答案
np.argwhere(a != b)
27 数据计算
题目:对a和b做矩阵乘法
难度:⭐⭐
答案
np.dot(a,b)
28 数据计算
题目:计算a和b对应元素相乘
难度:⭐⭐
答案
print(np.multiply(a,b))
print('========方法2========')
print(a * b) #方法2
29 数据计算
题目:计算行列式(使用21题生成的矩阵)
难度:⭐⭐
答案
np.linalg.det(result)
30 数据计算
题目:矩阵求逆(使用21题生成的矩阵)
难度:⭐⭐
答案
np.linalg.inv(result)
31 数据计算
题目:将22与23题生成的np.array对象修改为np.matrix对象
难度:⭐⭐
答案
a = np.matrix(a)
b = np.matrix(b)
32 数据计算
题目:计算上一题生成的两个np.matrix格式矩阵的对应元素乘积(对比异同)
难度:⭐⭐
答案
np.multiply(a,b)
33
数据计算
题目:对31题生成的两个np.matrix格式矩阵做矩阵乘法(对比异同)
难度:⭐⭐
答案
a * b
34 数据计算
题目:将ab两个矩阵按照行拼接
难度:⭐⭐
答案
np.hstack((a,b))
35 数据计算
题目:将ab两个矩阵按照列拼接
难度:⭐⭐
答案
np.vstack((a,b))
36 数据计算
题目:思考下面代码运行后new的结果
难度:⭐⭐⭐
答案
new = np.pad(result,pad_width = 1,constant_values=1)
37 数据查找
题目:找到new中大于1的元素的位置
难度:⭐⭐
答案
np.argwhere(new > 1)
38 数据修改
题目:将new中大于1的元素修改为8
难度:⭐⭐
答案
new[new > 1] = 8
39 数据计算
题目:对new矩阵按列求和
难度:⭐⭐
答案
np.sum(new, 0)
40
数据计算
题目:对new矩阵按行求和
难度:⭐⭐
答案
np.sum(new, 1)
以上就是本期20题的全部内容,你可以在后台回复NumPy来获取Notebook的两种版本习题练习,其实NumPy中的操作没有Pandas中的多变,所以全部大概在100题左右,差不多已经整理完毕。本文主要目的就是说一下新版的变化,如果你也喜欢这种形式的习题可以给我点个在看,我们下期见。
注:我未授权任何人在微信公众号之外的平台发布Pandas和NumPy系列文章,但近期在其他网站发现有人搬运相关习题甚至标记为原创,如有读者发现这种情况可以点击举报并联系我,希望大家能够尊重原创,谢谢!