从1—50之间的均匀地产生随机数字20个,存储数组 a 中,替换大于等于 30 数为 0,并获取给定数组 a 中前 5 个最大值的位置。
时间: 2024-11-23 20:40:27 浏览: 6
用Numpy中的内置函数实现生成一个随机生成均匀分布(0,1)的10个数据,输出离一个给定值最近的数
首先,我们可以使用Python的random模块生成1到50之间随机数的列表,然后遍历列表,将大于等于30的数字替换为0。接着,我们可以利用numpy库的argsort函数来获取前五个最大值的位置。以下是具体的步骤:
```python
import random
import numpy as np
# 生成20个1到50的随机数并存储在列表a中
a = [random.randint(1, 50) for _ in range(20)]
# 将大于等于30的数字替换为0
a = [0 if num >= 30 else num for num in a]
# 将列表转换成numpy数组,便于后续操作
a = np.array(a)
# 获取前5个最大值的位置
positions = np.argsort(-a)[:5]
print("替换后的数组:", a)
print("前5个最大值的位置:", positions)
```
这里我们使用`argsort(-a)`是因为`argsort`默认按升序排列,而我们想要的是降序,所以需要传递`-a`作为输入。负号会使排序变为最小值为0,即最大值。
阅读全文