现有数组arr=np.array([1,2,3,4,5,6,7,8,9]),使用np.where或者是布尔索引知识【旧值=新值】替换掉arr中的所有奇数,其他数组不变
时间: 2023-09-30 17:09:00 浏览: 47
可以使用布尔索引来替换掉arr中的所有奇数,代码如下:
```
import numpy as np
arr = np.array([1,2,3,4,5,6,7,8,9])
arr[arr % 2 == 1] = 0
print(arr)
```
输出结果为:
```
[0 2 0 4 0 6 0 8 0]
```
其中,`arr % 2 == 1`会生成一个布尔数组,其中为True的代表是奇数,然后将这个布尔数组作为索引传入到`arr`中即可替换掉对应位置的元素。
相关问题
如何从数组arr=np.array([0,1,2,3,4,5,6,7,8,9])中提取所有奇数
可以使用NumPy中的布尔索引来提取所有奇数。具体而言,我们可以使用以下代码:
```python
import numpy as np
arr = np.array([0,1,2,3,4,5,6,7,8,9])
odd_nums = arr[arr % 2 != 0]
print(odd_nums)
```
输出结果为:
```
[1 3 5 7 9]
```
在这里,我们首先使用arr % 2 != 0生成一个布尔数组,该数组指示哪些元素是奇数。然后,我们使用该布尔数组作为索引来选择所有奇数。
如何从数组arr=np.array([0,1,2,3,4,5,6,7,8,9])中提取所有奇数用切片
可以使用切片操作来提取数组中的所有奇数。我们可以使用步长(step)为2的切片操作来跳过偶数元素,只保留奇数元素。具体操作如下:
```python
arr = np.array([0,1,2,3,4,5,6,7,8,9])
odd_arr = arr[1::2] # 从索引1开始,每隔2个元素取一个,即取所有奇数
print(odd_arr) # 输出 [1 3 5 7 9]
```
在这个例子中,我们从索引1开始,每隔2个元素取一个,即取所有奇数。注意,切片操作是左闭右开区间,因此不需要指定结束索引,最后一个元素会被自动排除。