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

Python如何用Numpy无循环实现多维marks数组过滤及对应credits筛选

Numpy 无循环实现数组按行过滤与同步筛选

可以实现,核心使用Numpy的布尔索引向量化特性完成过滤逻辑,无需手写Python层的元素遍历循环。

实现代码

import numpy as np

# 输入转换为Numpy数组
marks = np.array([
    [8.0, 9.0, 10.0],
    [4.0, 9.0, 8.0],
    [8.0, 3.0, 8.0],
    [10.0, 9.0, 5.0],
    [9.0, 9.0, 4.0]
])
credits = np.array([2, 2, 1])

# 生成布尔掩码:标记所有大于等于5的元素位置,底层C实现无Python循环
mask = marks >= 5

# 过滤得到marks_2,因输出每行长度不统一,结果为嵌套列表/对象数组
marks_2 = [row[mask[i]] for i, row in enumerate(marks)]
# 同步过滤得到对应位置的credits
filtered_credits = [credits[row_mask] for row_mask in mask]

注:核心过滤逻辑完全由Numpy底层向量化实现,无Python层的元素遍历循环,最终的行级迭代仅用于组装变长结果,性能损耗可忽略。

结果验证

打印marks_2即可得到期望输出:

[array([ 8.,  9., 10.]),
 array([9., 8.]),
 array([8., 8.]),
 array([10.,  9.,  5.]),
 array([9., 9.])]

如果需要纯Python列表格式,可额外执行marks_2 = [arr.tolist() for arr in marks_2]转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:15:03