python实验四答案_实验楼 - Python Numpy 100题实验(四)linspace()函数等

创建一个5 * 5 的矩阵,其中每行都是1-5a = np.zeros((5, 5), dtype = np.int)

a += np.arange(1,6)

创建一个长度为 5 的等间隔一维数组,值域范围从0到1,但是不包括 0 和 1a = np.linspace(0 ,1, 6, endpoint=False)[1:]

题目有两个要求:

长度为5,等间隔

不包括起始点0和1

首先等间隔数组(等差)要用到linspace()函数,这个函数的调用格式如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)start, stop 就是指定的起始点

num 默认取值是50 ,也就是数组长度是50

endpoint 用于指定结束点是否包括进数组中

retstep 用于返回间隔的大小,默认值是False不返回步长

dtype 指定数据的类型默认下是返回浮点数

举个例子:a = np.linspace(0, 5, 6, retstep=True)

print(a)

# a = (array([0., 1., 2., 3., 4., 5.]), 1.0) 会附加返回步长

在这道题目中,还有一个条件,不包括开始点,不包括结束点我们可以传入False,而开始点,则是通过一个切片简单实现了,在指定数组长度的时候指定为6,然后从第二个元素开始取,这样正好得到长度为5的等差数组

创建长度为10的随机数组并进行排序a = np.random.random(10)

a.sort()

a

#array([0.23072732, 0.45098883, 0.48883051, 0.50154215, 0.50358937,

# 0.57383024, 0.58439302, 0.81625253, 0.82576855, 0.86943527])

随机数函数的简单应用

创建一个3*3的数组,并按照列排序a = np.random.randint(1, 10, (3, 3))

print(a)

a.sort(axis=0)

print(a)

#[[4 9 3]

# [6 2 7]

# [7 8 9]]

#[[4 2 3]

# [6 8 7]

# [7 9 9]]

像sort(),mean(),max()等等函数都可以传入axis参数,表示按照行(列)进行处理,axis=1表示按列,axis=0表示按行

创建一个长度为5的一维数组,并将其中的最大值替换成 0

array.argmax()函数的简单应用,这个函数也是可以传入axis参数的a = np.random.randint(1, 50, 5)

print(a) # array([27, 33, 14, 30, 12])

a[a.argmax()] = 0

print(a) # array([27, 0, 14, 30, 12])

将 float32 转化为 int32a = a.astype(np.int32)

创建一个二维数组,并对第二列从上往下排序

如果只是临时排序:a = np.random.randint(1, 10, (5,5))

a[a[:,2].argsort()]

如果保留排序结果a = np.random.randint(1, 10, (5,5))

a[:, 2].sort()

argsort()返回的一个数组,是进行排序之后的原来元素的位置,例如:a = np.random.randint(1, 10, 4)

print(a) # array([4, 5, 7, 3])

print(a.argsort()) # array([3, 0, 1, 2], dtype=int64)

保存结果的排序自然直接对第二列排序就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值