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

通过索引过滤Numpy值 修复数组比较报错获取预期输出

代码修复方案

错误原因

  1. 语法错误:相等判断误用了赋值运算符=,应该用比较运算符==,同时np.where的参数传递不符合语法要求,触发positional argument follows keyword argument报错
  2. 逻辑错误:两个unix时间数组长度不一致,直接逐位比较会触发numpy广播机制,无法正确匹配到两个数组共有的时间点对应的索引

修复后代码

import numpy as np 

a=np.array(["Short","Long","Short","Long","Short","Long"])
b=np.array(["Short","Long","Short","Long"])
c=np.array(["Short","Long","Short","Long","Long","Long"])

unix_a=np.array([1624580882,1624584458,1624589467,1624592213,1624595336,1624596349])
unix_b=np.array([1624580882,1624584458,1624595336,1624596349])
unix_c=np.array([1624580882,1624584464,1624589495,1624592238,1624595350,1624596380])

def Compare(val,val2, unix_val, unix_val2):
    # 取两个unix数组的交集,同时返回对应两个数组的索引
    common_unix, idx_unix_val, idx_unix_val2 = np.intersect1d(unix_val, unix_val2, return_indices=True)
    # 按共同时间点过滤两个val数组
    filtered_val = val[idx_unix_val]
    filtered_val2 = val2[idx_unix_val2]
    # 匹配val相等的位置,返回原始unix_val对应的索引
    equal_mask = filtered_val == filtered_val2
    return idx_unix_val[equal_mask].tolist()

print(Compare(a, b, unix_a, unix_b))
print(Compare(a, c, unix_a, unix_c))

运行输出

[0, 1, 4, 5]
[0]

完全符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:54:01