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

将for循环实现的连续重复值检测代码改写为NumPy向量化版本

NumPy向量化改写方案

需求

找出二维数组schedules中,不存在任何连续位置元素值相等的行的索引,改写原双层Python显式for循环实现为纯NumPy向量化操作,保证输出结果和原代码完全一致。

改写后完整代码

import numpy as np
# 与原代码一致的测试数据生成逻辑
generator = np.random.default_rng(999)
schedules = generator.integers(low=0, high=5, size=(1000, 21))

# 纯向量化核心逻辑
# 逐元素比较每行相邻位置的值,判断是否存在相等,再筛选无相邻相等的行索引
match_mask = np.all(schedules[:, 1:] != schedules[:, :-1], axis=1)
l = np.where(match_mask)[0].tolist()

print(l)

逻辑解释

  • 用数组切片直接取每行错位的两部分:schedules[:, 1:]是每行第2列到末尾的元素,schedules[:, :-1]是每行第1列到倒数第二列的元素,二者逐元素比较即可一次性得到所有相邻位置是否相等的布尔矩阵,完全替代内层循环的差值判断、计数逻辑
  • np.all(..., axis=1)沿列维度做判断,筛选出整行没有任何相邻位置相等的行,得到布尔掩码,替代外层循环的计数、条件判断逻辑
  • np.where直接从布尔掩码中提取符合条件的行索引,转换为list后和原代码输出格式、结果完全一致,全程无Python层显式for循环,执行效率远高于原双层循环实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:24:21