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

如何筛选ndarray中首列字符串指定位为指定值的对应第二列元素

问题描述

现有格式如下的NumPy ndarray数组:

[['000' '0.0008303259945444978']
 ['001' '0.001097105216902647']
 ['010' '0.009235959101850126']
 ['011' '0.00047129154937779666']
 ['100' '0.018205469077740434']
 ['101' '0.0013647687750767113']
 ['110' '0.94056678166667']
 ['111' '0.028228298617837884']]

需要实现的逻辑:从数组第二列中,筛选出第一列对应值满足特定规则的元素,提取对应第二列的值构建为新的ndarray数组。
本次示例的筛选规则:第一列字符串的第二位、第三位字符均为0。

实现方法

核心实现逻辑如下:

  • 遍历数组第一列的所有字符串,按照指定规则做校验,生成布尔筛选掩码
  • 用掩码过滤原数组,取出符合条件的第二列值
  • 由于原数组第二列存储的是字符串格式,统一转换为浮点类型后生成最终的ndarray数组

可直接运行的代码:

import numpy as np

# 原始输入数组
origin_arr = np.array([
    ['000', '0.0008303259945444978'],
    ['001', '0.001097105216902647'],
    ['010', '0.009235959101850126'],
    ['011', '0.00047129154937779666'],
    ['100', '0.018205469077740434'],
    ['101', '0.0013647687750767113'],
    ['110', '0.94056678166667'],
    ['111', '0.028228298617837884']
])

# 构造筛选掩码:Python字符串索引从0开始,第二位对应索引1,第三位对应索引2
filter_mask = [ (s[1] == '0' and s[2] == '0') for s in origin_arr[:, 0] ]

# 筛选值并做类型转换,得到最终结果
result_arr = origin_arr[filter_mask, 1].astype(np.float64)
运行结果

按照示例规则筛选,只有第一列值为'000'的行符合要求,最终输出的结果数组为:

array([0.00083033])

提示:如果需要更换筛选规则,只需要修改filter_mask的判断逻辑即可,后续筛选、类型转换的代码无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:27:08