Replace all odd numbers in arr with -1 without changing arr input: arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
时间: 2023-07-02 13:23:31 浏览: 46
你可以使用 NumPy 库中的 `where` 函数来实现将数组中的奇数替换为 -1,但不改变原始的 `arr` 数组。
例如,假设有一个数组 `arr`,你想将其中所有奇数替换为 -1,可以使用以下代码:
``` python
import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
new_arr = np.where(arr % 2 == 1, -1, arr)
print(new_arr) # 输出 [ 0 -1 2 -1 4 -1 6 -1 8 -1]
```
在这个例子中,`where` 函数的第一个参数是一个条件,即 `arr % 2 == 1`,它返回一个布尔数组,表示哪些元素满足条件。即所有奇数元素。第二个参数是条件满足时要替换的值,即 -1。第三个参数是条件不满足时要保留的原始值,即 `arr` 数组中的元素。
这样,`new_arr` 中所有奇数元素都被替换为 -1,而原始的 `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个元素取一个,即取所有奇数。注意,切片操作是左闭右开区间,因此不需要指定结束索引,最后一个元素会被自动排除。