numpy基础十道练习题(一)

背景:通过记录自己学习的过程,方便复习

平台:jupyter notebook

numpy中文网:https://www.numpy.org.cn/
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
(该文部分解释来源于此网站)

1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1在

import numpy as np#导入numpy包
nd = np.zeros(10)#np.zeros是创建一个全是0的数组——nd
nd[4]=1#对第五个数进行赋值
nd#直接对创建的数组显示

结果
array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])

ndarray对象:就是数组,里面所有数的类型都相同,并由非负整数元组索引(也就是0,1,2,3这些)。
np.zeros(shape[, dtype, order])
返回给定形状和类型的新数组,并用零填充,默认的dtype是float64

shape:形状,定义多少个,多少维度,都是它,一般的格式是[a,b],a代表的是你要创建的数组的行,b则代表列

dtype:数据类型,就是int,float等类型,此处列出菜鸟教程对于相关数据类型的解释,数据类型的解释

2、创建一个元素为从10到49的ndarray对象

n2 = np.arange(10,50)#顺序生成
n2
结果:
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
       27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
       44, 45, 46, 47, 48, 49])

np.arange([start, ]stop, [step, ]dtype=None):
arange()将创建具有有规律递增值的数组,从你设置的start到你设置的stop,比如你设置(0,10),那么将会取0到9,不会取10。
step:代表的是就是步长,就是隔几个取一个数,比如依然是(0,10)设置为2,那么0和1就是一步,2和3就是一步,而我们只取每一步的开始

3、将第2题的所有元素位置反转

n3 = n2[::-1]
n3
结果:
array([49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
       32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
       15, 14, 13, 12, 11, 10])

切片:切片其实就是选择你想要的那一部分,通过改变几个参数来选取。我们通过冒号分隔切片参数 start:stop:step 来进行切片操作
针对一维数组:例如n2[0:3]取n2[0]到n2[2],还是不会取到我们右侧写的数,步长依然如上面一样,那么步长为-1则代表不向前走,而是往反方向走,那么就形成了逆序

4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素

n4 = np.random.random([10,10])#随机生成10*10
print (n4.max())
print (n4.min())

np.random.random(size=None):就是创建size这么长的随机数,且都取在0和1之间,在设置的同时跟shape一样,可以界定它的维度,如果只有一个数,则是一维,两个数,则是两维
最大值
np.max(你的数组)或你的数组.max()
最小值
np.min(你的数组)或你的数组.min()

5、创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0

n5 = np.zeros([10,10])
n5[0,:]=1#第一行,所有列
n5[:,0]=1#所有行,第一列
n5[9,:]=1#第十行,所有列
n5[:,9]=1#所有行,第十列
n5
结果
array([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])

这个练习可以使用切片的方法来进行拆分赋值
针对多维数组:在面对多维数组的时候,我们就会用到逗号——“,”来区分行和列。逗号之前代表的是行,之后的列,在面对具体情况的时候,我们可以把两个部分分别看成两个一维数组,此时再用“:”进行切分,若某一个部分只有一个“:”,则代表那个部分全部选中

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值