写完Numpy100道基础练习题后的错误总结和语法总结

前言:由于是看视频学习的缘故,在写这100道题目道中有很多视频中没有出现的语法,然而很多语法直接拿来用都是比较简单的,少了很多的循环语句。至此写下这篇错误总结和语法总结,希望可以给小伙伴们一些帮助,因为博主都帮你们踩雷了!!

        1、Create a null vector of size 10 (★☆☆)')

                创建一个大小为10的空向量

对于这个问题有四种解法:所用到的语法如下

① np.empty 构造一个大小为 shape 的未初始化数组
②np.zeros 构造一个大小为 shape 的全0数组
③np.ones 构造一个大小为 shape 的全1数组
④np.full 构造一个大小为 shape 的用指定值填满的数组

print(np.empty(10))
print(np.ones(10))
print(np.zeros(10))
print(np.full((2,5),5.0))

 

需要我们注意的是在用np.full语法进行填充后,在用np.empty 构造一个大小为 shape 的未初始化数组,会发现构造的函数还是用full语句创建后的内容,所以需要我们在创建完后进行初始化

 

          2、Create a 3x3 matrix with values ranging from 0 to 8 (★☆☆)')

                用0-8这9个数构造一个3x3大小的矩阵

对于这个问题有2种解法:所用到的语法如下

①np.arange().reshape(3,3)

②np.arange().reshape((3,-1))

x3=np.arange(0,9).reshape(3,3)
print(x3)

sample3 = np.arange(9).reshape((3, -1))
print(sample3)

 一开始看到第二个语法用时觉得很奇怪,对-1不是很了解,下面简单介绍一下reshape的性质:

reshape函数是对narray的数据结构进行维度变换,由于变换遵循对象元素个数不变,在进行变换时,假设一个数据对象narray的总元素个数为N,如果我们给出一个维度为(m,-1)时,我们就理解为将对象变换为一个二维矩阵,矩阵的第一维度大小为m,第二维度大小为N/m

所以说当为(3,-1)时也是满足的!

        3、Find indices of non-zero elements from [1,2,0,0,4,0] (★☆☆)')

                从数组[1,2,0,0,4,0]中找出非0元素的下标

对于这个问题有2种解法:所用到的语法如下

①利用循环嵌套语句

②直接利用自带语法

x3=np.array([1,2,0,0,4,0])
print(x3)
for i in range(len(x3)):
    if x3[i]!=0:
        print(i)
        
print(np.nonzero([1,2,0,0,4,0]))

 

在这里我犯了个大错,直接用惯性思维去使用循环嵌套语句去寻找非0元素。直接调用numpy中自带的语法就行了!!!希望小伙伴们不要犯和我一样的低级错误!!!

        4、Create a 3x3 identity matrix (★☆☆)')

                创建3x3的对角矩阵

对于这个问题有3种解法:所用到的语法如下

①np.identity

②np.eye

③np.diag

##“对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵


# identity 只能创建方阵,eye要灵活一些,可以创建NxM的矩阵,也可以控制对角线的位置

print(np.identity(3))
print('-----------------------------------')
print(np.eye(3,3,0)) #默认第一个和第二个参数相等,第三个参数为对角线位置
np.diag([1,1,1])

 考研过去这么长时间,我都忘了什么是对角矩阵,研究生白考了!!在这里也给大家科普一下:

对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。对角矩阵可以认为是矩阵中最简单的一种,值得一提的是:对角线上的元素可以为 0 或其他值,对角线上元素相等的对角矩阵称为数量矩阵;对角线上元素全为1的对角矩阵称为单位矩阵。对角矩阵的运算包括和、差运算、数乘运算、同阶对角阵的乘积运算,且结果仍为对角阵。

  identity 只能创建方阵,eye要灵活一些,可以创建NxM的矩阵,也可以控制对角线的位置

所以博主的建议是我们要多使用eye函数可以灵活创建矩阵!!

        5、Create a 3x3x3 array with random values (★☆☆)')

                用随机数创建一个3x3x3的矩阵

x4=np.random.random((3,3,3))
x4

我们需要注意的是,可以直接使用random函数去调用不同类型

X=np.random.randint((3,3,3))
X

 我一开始用双random创建的浮点数,看着不是很整洁,于是我想用random.randint去创建整型的数组,发现创建的是一维数组。这个时候我们想要去创建整型数组,可以用ceil,floor函数去向上,向下取整!!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>