首页 > 解决方案 > np.nan_to_num 导致错误 RuntimeWarning: 在 true_divide 中遇到无效值

问题描述

我在 np.ndarrays 中有一些数据,我想将它们标准化为 0 到 1 之间。我在这里问最好的方法是什么,以及如何避免除以 0,有人告诉我最好的方法是使用 np.nan_to_num()。这似乎有效,我认为我没有任何问题。自从上一个问题以来,我的代码已经发展,现在我想对三个不同的数组 trainingsignals、validationsignals 和 testsignals 做同样的事情:

TrainingSigMaxes = np.max(trainingsignals, axis = 1)
TrainingNormSignals=np.nan_to_num(trainingsignals/TrainingSigMaxes[:,np.newaxis])

ValidationSigMaxes = np.max(validationsignals, axis = 1)
ValidationNormSignals=np.nan_to_num(validationsignals/ValidationSigMaxes[:,np.newaxis])

TestSigMaxes = np.max(testsignals, axis = 1)
TestNormSignals=np.nan_to_num(testsignals/TestSigMaxes[:,np.newaxis])

但是当我运行代码时,它给了我错误消息:“RuntimeWarning:true_divide 中遇到的值无效”。

谁能帮我解决这个问题?提前非常感谢。

标签: pythonpython-3.xnumpy

解决方案


这只是一个警告。您仍然会得到“近似正确”的输出。

如果要隐藏警告,可以事先运行:

import warnings
warnings.filterwarnings("ignore")

或者更多定制,你可以参考这个

注意:“近似正确”值基于函数 numpy.nan_to_num。你可以参考文档


推荐阅读