You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NumPy/Pandas剔除数组中不在指定范围的值?

问题分析与修正

你的代码存在几个关键问题,导致无法正确筛选出1到1.3之间的数值:

  1. 循环变量误用:for i in parallax里的i是parallax中的元素值,不是索引,所以parallax[i]会触发索引错误(比如元素是1.2时,用1.2当索引取Series的值肯定不对)。
  2. 条件逻辑错误:你当前的逻辑是只要数值>=1就添加,或者<=1.3就添加,这会把所有数值都保留(任何数要么>=1要么<=1.3),但你实际需要的是同时满足1 ≤ 数值 ≤ 1.3的元素。
  3. np.append用法错误:np.append需要传入目标数组、要添加的元素这两个核心参数,且不会原地修改数组,需要重新赋值;用Python列表的话直接用append()方法更简单。

正确解法(优先推荐向量化操作,效率更高)

对于pandas Series或numpy数组,完全不需要用循环,直接用布尔索引就能高效处理数千条数据:

方法1:用pandas布尔索引

import pandas as pd

# 读取数据
query_result = pd.read_csv('data_2.csv')
parallax = query_result['parallax']

# 筛选1到1.3之间的数值(包含边界)
parallax_range = parallax[(parallax >= 1) & (parallax <= 1.3)]

方法2:转成numpy数组后筛选

import pandas as pd
import numpy as np

query_result = pd.read_csv('data_2.csv')
parallax = query_result['parallax'].to_numpy()

# 筛选符合条件的元素
parallax_range = parallax[(parallax >= 1) & (parallax <= 1.3)]

如果一定要用循环(不推荐,效率低)

修正循环写法如下:

import pandas as pd
import numpy as np

query_result = pd.read_csv('data_2.csv')
parallax = query_result['parallax']

parallax_range = []
for val in parallax:
    # 同时满足两个条件才保留
    if 1 <= val <= 1.3:
        parallax_range.append(val)

# 可选:转成numpy数组
parallax_range = np.array(parallax_range)

内容的提问来源于stack exchange,提问作者notcassandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:52:16