随机删除百分之50个数组中值为3的值,并输出删除值的索引
时间: 2024-03-27 17:40:48 浏览: 105
您可以使用numpy库中的random.choice函数和where函数来随机删除百分之50个数组中值为3的值,并输出删除值的索引。以下是示例代码:
```python
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 2, 3, 3, 4, 5, 6, 5, 4, 3])
# 找到所有值为3的元素的索引
idx = np.where(arr == 3)[0]
# 计算要删除的元素数量
n_to_delete = int(len(idx) * 0.5)
# 随机删除元素
to_delete = np.random.choice(idx, size=n_to_delete, replace=False)
# 输出删除值的索引
print(to_delete)
# 删除元素
arr = np.delete(arr, to_delete)
# 打印结果
print(arr)
```
在此示例中,我们创建了一个一维数组arr。我们使用numpy的where函数找到所有值为3的元素的索引,并将它们存储在变量idx中。然后,我们计算要删除的元素数量,即值为3的元素数量的百分之50。我们使用numpy的random.choice函数从idx中随机选择这些元素,存储在变量to_delete中。我们使用numpy的delete函数从数组中删除这些元素,并将结果存储在变量arr中。最后,我们将删除值的索引打印到控制台上,并打印删除后的数组arr。
注意,如果要删除的元素数量大于值为3的元素总数,上述代码将会引发IndexError异常。您可以使用numpy的size函数来计算值为3的元素总数,以确保要删除的元素数量不超过它。
阅读全文