python实验四答案_实验楼-PythonNumpy100题实验
(四)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)python获取数组长度
print(a) # array([4, 5, 7, 3])
print(a.argsort()) # array([3, 0, 1, 2], dtype=int64)
保存结果的排序⾃然直接对第⼆列排序就可以了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。