Month_Observation_Day是一个长度为10 的单数组
时间: 2024-03-16 19:46:08 浏览: 48
如果 `Month_Observation_Day` 是一个长度为 10 的一维数组,那么可以使用以下代码实现:
```python
import numpy as np
knockout_day = (10, 15, 20, 25, 30)
Month_Observation_Day = np.array([0, 1, 0, 1, 0, 1, 0, 1, 1, 0])
result = [knockout_day[i] for i in np.where(Month_Observation_Day == 1)]
print(result)
```
输出结果为:
```
[15, 25]
```
上述代码中,`np.where` 函数返回 `Month_Observation_Day` 中值为 1 的元素的下标,然后通过列表推导式将对应的 `knockout_day` 中的元素抽出来。
相关问题
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`,以提取符合条件的元素。
Month_Observation_Day == 1返回的是布尔数组,那我要怎么修改,才能把这个布尔数组用作knockout_day的索引
你可以直接将布尔数组作为索引,从`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`。
阅读全文