创建一个5 * 5 的矩阵,其中每行都是1-5
a = np.zeros((5, 5), dtype = np.int)
a += np.arange(1,6)
创建一个长度为 5 的等间隔一维数组,值域范围从0到1,但是不包括 0 和 1
a = 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 转化为 int32
a = 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)
保存结果的排序自然直接对第二列排序就可以了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116755.html