前言:由于是看视频学习的缘故,在写这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函数去向上,向下取整!!