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
相关产品推荐
相关产品推荐

