Python Numpy创建1D向量:索引在指定列表时值为1/300否则为0
生成目标Numpy向量的实现方法
实现逻辑
- 先创建长度为6436的全0 Numpy数组,满足非活跃机场取值为0的要求
- 提取
segments["ORIGIN_INDEX"]列的所有活跃机场索引 - 对全0数组中对应活跃索引的位置,批量赋值为
1/300即可
完整代码示例
import numpy as np # 初始化长度为6436的全0向量 x0 = np.zeros(6436, dtype=np.float64) # 提取所有活跃机场的索引 active_indices = segments["ORIGIN_INDEX"].to_numpy() # 给活跃机场对应位置批量赋值 x0[active_indices] = 1 / 300
优化补充
如果后续活跃机场数量会动态变化,不用硬编码300,直接取活跃索引长度计算取值即可:x0[active_indices] = 1 / len(active_indices)
如果需要避免索引越界问题,可以加一行合法性校验:assert np.all((active_indices >= 0) & (active_indices < 6436)), "存在超出范围的非法机场索引"
内容的提问来源于stack exchange,提问作者PDubs
相关产品推荐
相关产品推荐

