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

Python基于索引筛选Numpy数组:结果无法存入空列表排查

问题原因及修正方案

核心错误点

  • 索引方向搞反:你写的arr[:1,i]是取第i列的第一行数据,而你要判断的是每一行的第二列(索引为1),应该用arr[i, 1]来获取对应位置的值。
  • 添加内容错误:符合条件时你把整个原数组arr添加到列表里,而不是当前符合条件的行arr[i],这会导致最终结果全是原数组的重复。
  • 循环逻辑冗余:用Python循环处理Numpy数组效率低,Numpy本身支持矢量化筛选,没必要手动遍历。

修正后的代码

方式一:修正循环逻辑

如果坚持用循环,改成这样:

import numpy as np

data = [
    [0.0,52.0,33.0,44.0,51.0],
    [0.0,30.0,45.0,12.0,44.0],
    [0.0,67.0,99.0,23.0,78.0]
]

arr = np.array(data)
filter_arr = []

for i in range(len(arr)):
    # 取第i行的第二列(索引1)判断是否大于50
    if arr[i, 1] > 50:
        filter_arr.append(arr[i])  # 添加当前行而非整个数组

filter_arr = np.array(filter_arr)
print(filter_arr)

方式二:Numpy矢量化筛选(推荐)

这是Numpy的标准用法,更简洁高效:

import numpy as np

data = [
    [0.0,52.0,33.0,44.0,51.0],
    [0.0,30.0,45.0,12.0,44.0],
    [0.0,67.0,99.0,23.0,78.0]
]

arr = np.array(data)
# 直接用布尔索引筛选第二列>50的行
filter_arr = arr[arr[:, 1] > 50]
print(filter_arr)

两种方式运行后都会得到你期望的结果:

array([[ 0., 52., 33., 44., 51.],
       [ 0., 67., 99., 23., 78.]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:15