我正在使用ndimage
来填充多种形状(详细地,我使用命令ndimage.binary_fill_holes
,ndimage.label
,ndimage.sum
和ndimage.center_of_mass
)。当我运行代码时,我收到以下警告:
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/
python/scipy/ndimage/measurements.py:1163: RuntimeWarning: invalid
value encountered in divide
results = [sum(input * grids[dir].astype(float), labels, index) /
normalizer for dir in range(input.ndim)]
我该如何解决这个问题?
答案 0 :(得分:0)
只有当您拥有0/0
或inf/inf
部门时,才会收到此错误。
这意味着,在列表理解中for
循环的至少一种情况下,您的变量normalizer
AND同时sum()
的返回值都是{{1 }或两者0
。
生成错误的代码段属于+/-inf
(source)。
您是如何致电center_of_mass(input, labels=None, index=None)
的?
如果您未指定center_of_mass()
和label
,则有一种可能性。在这种情况下,仅当输入数组的均值为零时,变量index
才可以为零。在这种情况下,您可以在通话前检查normalizer
的值吗?一个微不足道的可能性是输入是一个零数组。在这种情况下,您会获得input.sum()
。
如果您提供0/0
和label
,则在调用index
之前输入有任何问题。
如果您不知道问题的原因/位置,请尝试打印一些数据。此类错误的结果是center_of_mass()
值:nan
将返回类似center_of_mass()
的元组。