numpy中获取数组中值等于0的位置索引
时间: 2024-05-10 20:15:18 浏览: 139
可以使用numpy的where函数来获取数组中值等于0的位置索引。示例如下:
```python
import numpy as np
arr = np.array([0, 1, 0, 2, 0, 3, 0, 4])
# 使用where函数获取值等于0的位置索引
indices = np.where(arr == 0)
print(indices)
```
输出结果为:
```
(array([0, 2, 4, 6]),)
```
其中,返回值为一个tuple,包含一个ndarray,该ndarray中存储了值等于0的位置索引。在本例中,值等于0的位置索引为0、2、4、6。
相关问题
随机删除50个数组中值为3的值,并输出删除值的索引
您可以使用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]
# 随机删除50个元素
to_delete = np.random.choice(idx, size=50, replace=False)
# 输出删除值的索引
print(to_delete)
# 删除元素
arr = np.delete(arr, to_delete)
# 打印结果
print(arr)
```
在此示例中,我们创建了一个一维数组arr。我们使用numpy的where函数找到所有值为3的元素的索引,并将它们存储在变量idx中。然后,我们使用numpy的random.choice函数从idx中随机选择50个元素,存储在变量to_delete中。我们使用numpy的delete函数从数组中删除这些元素,并将结果存储在变量arr中。最后,我们将删除值的索引打印到控制台上,并打印删除后的数组arr。
注意,如果要删除的元素数量大于值为3的元素总数,上述代码将会引发IndexError异常。您可以使用numpy的size函数来计算值为3的元素总数,以确保要删除的元素数量不超过它。
随机删除百分之50个数组中值为3的值,并输出删除值的索引
您可以使用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的元素总数,以确保要删除的元素数量不超过它。
阅读全文