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

如何筛选数组中以特定数字开头的元素?Numpy数组行筛选求助

嘿,我来帮你搞定这两个数组相关的问题!

问题1:如何打印数组中以特定数字开头的元素?

核心思路就是检查每个元素的开头数字是否匹配目标,这里分两种常见场景给你示例:

场景1:普通Python数值列表

把每个数字转成字符串,用startswith()判断开头即可:

# 示例数组
arr = [102, 203, 105, 301, 100]
target_prefix = "10"  # 把目标开头转成字符串更方便判断

# 筛选并打印符合条件的元素
for num in arr:
    if str(num).startswith(target_prefix):
        print(num)

运行后输出:

102
105
100

如果数组里本身就是字符串元素,直接判断就行:

arr = ["102", "203", "105"]
target_prefix = "10"
for item in arr:
    if item.startswith(target_prefix):
        print(item)

问题2:Numpy数组中仅保留以10开头的行

你提到的a[0,0:]或a[0:,0]是取整行/整列的操作,其实不用遍历,用Numpy的布尔索引就能高效解决,比循环快得多!

假设你的数组是二维的,每行第一个元素是判断目标,直接看代码:

import numpy as np

# 示例二维Numpy数组
a = np.array([
    [101, 2, 3],
    [201, 4, 5],
    [103, 6, 7],
    [300, 8, 9]
])

# 1. 提取每行第一个元素,转字符串后判断是否以"10"开头,得到布尔数组
mask = np.char.startswith(a[:, 0].astype(str), "10")

# 2. 用布尔数组筛选符合条件的行
filtered_arr = a[mask]

# 打印结果
print(filtered_arr)

运行后输出:

[[101   2   3]
 [103   6   7]]

如果不想转字符串,也可以用数学逻辑判断(比如判断元素在[100, 199)区间,适合固定位数的数字),但转字符串的方法更通用——不管数字是几位,只要开头匹配就能筛选。

另外提醒下:尽量别用循环遍历Numpy数组,它的向量化操作效率比循环高太多,尤其是数组规模大的时候!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:03:09