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

numpy新手使用np.where统计买卖次数遇ValueError错误求助

解决方法

你的错误根源在于对np.where的用法误解,以及count未正确初始化导致形状不匹配。以下是几种正确的实现方式:

  • 直接统计次数(最简洁高效)
    布尔数组中True对应数值1,False对应0,直接对布尔条件求和就能得到符合条件的次数:

    count = ((df.Buy == 1) & (df.Sell == 0)).sum()
    
  • 逐行更新计数(若需保留中间状态)
    如果确实需要逐行更新计数数组,先初始化一个与DataFrame行数相同的全0数组,再通过布尔索引累加:

    # 初始化计数数组
    count = np.zeros(len(df), dtype=int)
    # 对符合条件的位置累加1
    count[(df.Buy == 1) & (df.Sell == 0)] += 1
    # 如果需要总次数,再对count求和
    total_count = count.sum()
    

错误原因说明

你原代码中count的形状是(0,),而布尔条件((df.Buy == 1) & (df.Sell == 0))的形状是(9,),np.where要求三个参数的形状必须可广播,两者形状不匹配就触发了ValueError。而且np.where并不适合用来做简单的计数求和,直接利用布尔数组的求和特性更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:40:33