写在开头,笔者在学习写代码的时候有这么一个问题:找到解决问题的办法之后,代码只写了一遍就过了,但这有一个很大的问题:1.由于是才学会这个方法,不是很熟练,第一遍写很慢并且会出现一些莫名其妙的问题。2.学习完后长时间不用,又会导致遗忘,但这东西又是一些很重要的,需要保持长期的记忆。如果你也有笔者的问题,不妨跟着笔者的脚步来学习。在讲解方法的同时带上一些练习。如果需要学习打卡和讨论的童鞋请进入扣扣裙:908720512
创建array数组
params:可以是一个列表(1,2维都可以),也可以是一个元组
# 可以传入一个二维的列表
np.array([1,2,3])
# 创建全为1的array数组
np.ones(10)
array([1., 1., 1., 1., 1.])
np.noes((2,1))
array([[1.],
[1.]])
# 创建全为0的array数组
np.zeros(5)
array([ 0., 0., 0., 0., 0.])
np.zeros((2, 1))
array([[ 0.],
[ 0.]])
# 从0开始创建直到n-1停止
np.arange(3)
array([0, 1, 2])
#注:arange和reshape可以连用,来改变array的形状
# num的意思是在1到10之间取5个数
np.linespace(1, 10, num=5)
# 随机选择4个数组成array
np.empty(4)
这些接口都有一些,接口的意思就是ones,zeros等这些方法,他们都有一些统一的参数:dtype参数来改变数据的类型,order参数来改变对数据进行排序
array对象有的属性
ndim:查看维度
shape:查看形状
dtype:查看类型
array对象的常用数据类型
int32,int64,int16,uint8,uint32
练习题(每日10题)
笔者在每一题后设置了分数,笔者认为打出来的分数依然可以对你的学习进行评估。(低于60:代表需要重新学习。60-80:恭喜你掌握了大部分,但有一些细节还需要加深。80-100:太好了,你的学习太棒了)
1.np.array(object)中object可以是一维,二维,三维数组吗?(10)
是的
2.创建一个大小为10的空向量,有几种方法?(10)
np.zeros(10)
3.将一个数组变换倒序(最后一个元素成为第一个元素)(10)
np.arange(10)[::-1]
4.从数组中找出非0元素的下标的方法是什么?(10)
np.nonzero([1, 2, 0, 0, 4, 0])
5.创建3x3的对角矩阵有几种方法?哪种方法好?(10)
# identity 只能创建方阵,eye要灵活一些,可以创建NxM的矩阵,也可以控制对角线的位置
np.identity(3)
#默认第一个和第二个参数是矩阵的形状,第三个参数为对角线的开始位置
np.eye(3,3,0)
6.用0来扩展扩展一个3*3数组的边界(10)
a = np.ones((3,3))
np.pad(a, 1, mode='constant', constant_values=0)
7.print(0.3 == 3 * 0.1)输出什么?(10)
False 浮点数可以比大小,但相等要用math.isclose比较
8.np.nan == np.nan以及np.nan > np.nan输出什么?(10)
False,因为np.nan无法作比较
9.用1,2,3,4做为4*4的矩阵的对角线元素,来创建5x5的矩阵。(10)
np.diag([1, 2, 3, 4], -1)
10.对一个9x5x7的数组,找出第70个元素的下标.(10)
np.unravel_index(70, (9, 5, 7))