Month_Observation_Day == 1返回的是布尔数组,那我要怎么修改,才能把这个布尔数组用作knockout_day的索引
时间: 2024-03-16 20:45:51 浏览: 74
你可以直接将布尔数组作为索引,从`knockout_day`数组中取出对应位置上的值,生成新的数组`knockout_mday_overlock`。例如:
```python
import numpy as np
# 假设 knockout_day 和 Month_Observation_Day 都是一维数组
knockout_day = np.array([10, 20, 30, 40, 50])
Month_Observation_Day = np.array([1, 0, 1, 1, 0])
# 使用布尔索引生成新数组 knockout_mday_overlock
knockout_mday_overlock = knockout_day[Month_Observation_Day == 1]
print(knockout_mday_overlock)
```
输出结果为:
```
[10 30 40]
```
在上面的代码中,`knockout_day[Month_Observation_Day == 1]` 的意思是,使用布尔索引`Month_Observation_Day == 1`,生成一个布尔数组,表示对应位置上`Month_Observation_Day`中的值是否为 1。然后将布尔数组作为索引,从`knockout_day`数组中取出对应位置上的值,生成新的数组`knockout_mday_overlock`。
相关问题
knockout_day的类型是tuple,Month_Observation_Day的类型是ndarray,我要把Month_Observation_Day中数字为1的对应位置的knockout_day的数抽出来
可以使用以下代码实现:
```python
import numpy as np
knockout_day = (10, 15, 20, 25, 30)
Month_Observation_Day = np.array([[0, 1, 0, 1, 0],
[1, 0, 0, 1, 0],
[0, 0, 1, 0, 1]])
result = [knockout_day[i] for i in np.where(Month_Observation_Day == 1)[1] if knockout_day[i] == 1]
print(result)
```
输出结果为:
```
[]
```
注意,上述代码中的结果为空列表,因为在示例中的 `knockout_day` 中没有数字为 1 的元素。如果 `knockout_day` 中存在数字为 1 的元素,则可以在 `if` 语句中添加条件 `knockout_day[i] == 1`,以提取符合条件的元素。
knockout_mday_overlock = knockout_day[ Month_Observation_Day==1],返回Traceback (most recent call last): File "D:\Program Files\JetBrains\PyCharm Community Edition 2021.3.2\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec exec(exp, global_vars, local_vars) File "<input>", line 1, in <module> TypeError: only integer scalar arrays can be converted to a scalar index
这个错误通常是由于尝试将一个非标量的数组转换为标量索引引起的。请检查你的代码,确认是否有一个数组被错误地用作索引,或者索引的类型不正确。你可以尝试使用整数索引来访问数组中的元素,或者使用其他适当的索引方式。如果你使用了数组作为索引,你可以尝试使用`np.ravel`或`np.flatten`函数将其展平为一维数组。
在你的代码中,`Month_Observation_Day==1`返回的是一个布尔数组,而`knockout_day`和`knockout_mday_overlock`都是数组。因此,当你尝试将布尔数组用作`knockout_day`的索引时,会出现上述错误。你可以使用`np.where`函数或者布尔索引来实现这个要求。下面是一个使用布尔索引的例子:
```python
import numpy as np
# 假设 knockout_day 和 Month_Observation_Day 都是一维数组
knockout_day = np.array([10, 20, 30, 40, 50])
Month_Observation_Day = np.array([1, 0, 1, 1, 0])
# 使用布尔索引生成新数组 knockout_mday_overlock
knockout_mday_overlock = knockout_day[Month_Observation_Day == 1]
print(knockout_mday_overlock)
```
输出结果为:
```
[10 30 40]
```
在上面的代码中,`knockout_day[Month_Observation_Day == 1]` 的意思是,使用布尔索引`Month_Observation_Day == 1`,生成一个布尔数组,表示对应位置上 Month_Observation_Day 中的值是否为 1。然后将布尔数组作为索引,从 knockout_day 数组中取出对应位置上的值,生成新的数组 knockout_mday_overlock。
阅读全文