【Numpy调试】ValueError: zero-size array to reduction operation minimum which has no identity

一、问题描述

在写变量自动分箱时,想实现一个循环功能,出现下边了如题般的报错。

稍微解释一下这段代码想实现的功能,threshold是卡方阈值,cvs是每次循环后的分箱阈值。当cvs.min()

但如果执行到最后,cvs.min()可能还是小于threshold,这就会使得cvs变成一个空列表。空列表无法求min就会出现该报错。

    _c1 = lambda x: x < threshold
    while _c1(cvs.min()):
        cvs, freq, cutoff = chi2_merge_core(cvs, freq, cutoff, cvs.argmin())

二、解决方法

解决方法是在求min之前,先判断一下是否为空列表,这样就不会报错了。

_c1 = lambda x: x < threshold
while _c1(cvs.min() if len(cvs)>0 else 100):
    cvs, freq, cutoff = chi2_merge_core(cvs, freq, cutoff, cvs.argmin())

你可能感兴趣的:(Python,python)