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

如何实现Numpy数组行间元素级比较并统计符合条件行数

Python实现:统计存在全元素小于自身行的行数

问题描述

给定一个50行15列的Numpy数组,需要统计其中满足「存在至少一行(排除自身)的所有元素均小于当前行」的行数。

示例数据:

a b c         
1 6 2
2 6 8
4 7 12
7 9 13

示例中第3、4行符合条件,最终返回计数2。

实现代码

import numpy as np

# 替换为你的数据集数组
x = np.array([
    [1, 6, 2],
    [2, 6, 8],
    [4, 7, 12],
    [7, 9, 13]
])

# 生成两两行的元素级比较结果:other_row < current_row
row_comparisons = x[:, np.newaxis, :] > x[np.newaxis, :, :]

# 判断每一对行是否满足other_row所有元素都小于current_row
all_elements_less = np.all(row_comparisons, axis=2)

# 排除自身与自身的比较(对角线元素设为False)
np.fill_diagonal(all_elements_less, False)

# 统计存在至少一行满足条件的行数
count = np.sum(np.any(all_elements_less, axis=1))

print(count)  # 示例输出:2

代码说明

  • 行级元素比较:借助Numpy广播机制,x[:, np.newaxis, :] > x[np.newaxis, :, :]生成三维数组,其中row_comparisons[i,j,k]表示第j行第k个元素是否小于第i行第k个元素。
  • 全元素判断:np.all(row_comparisons, axis=2)对每行的元素比较结果取逻辑与,得到二维数组,all_elements_less[i,j]为True表示第j行所有元素都小于第i行。
  • 排除自身比较:用np.fill_diagonal将对角线位置(自身和自身的比较)设为False,避免误统计。
  • 统计结果:np.any(all_elements_less, axis=1)判断每行是否存在符合条件的其他行,最后用np.sum统计总数。

该方法利用Numpy向量运算,避免循环,效率较高,适配50行15列的数据集规模。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:10:23