nump基础操作:创建数组 + 一些基础练习


写在开头,笔者在学习写代码的时候有这么一个问题:找到解决问题的办法之后,代码只写了一遍就过了,但这有一个很大的问题: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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值