假设我有一个带有一些 float(‘nan’) 的 numpy 数组,我现在不想估算这些数据,我想首先对这些数据进行归一化并将 NaN 数据保留在原始空间,有什么办法可以做那?
以前我在 sklearn.Preprocessing
--- 中使用了 normalize
函数,但该函数似乎不能将任何包含 NaN 的数组作为输入。
原文由 xxx222 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个带有一些 float(‘nan’) 的 numpy 数组,我现在不想估算这些数据,我想首先对这些数据进行归一化并将 NaN 数据保留在原始空间,有什么办法可以做那?
以前我在 sklearn.Preprocessing
--- 中使用了 normalize
函数,但该函数似乎不能将任何包含 NaN 的数组作为输入。
原文由 xxx222 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 numpy.nansum
计算范数并忽略 nan:
In [54]: x
Out[54]: array([ 1., 2., nan, 3.])
这是忽略了 nan
的规范:
In [55]: np.sqrt(np.nansum(np.square(x)))
Out[55]: 3.7416573867739413
y
是归一化数组:
In [56]: y = x / np.sqrt(np.nansum(np.square(x)))
In [57]: y
Out[57]: array([ 0.26726124, 0.53452248, nan, 0.80178373])
In [58]: np.linalg.norm(y[~np.isnan(y)])
Out[58]: 1.0
原文由 Warren Weckesser 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答923 阅读✓ 已解决
您可以使用
numpy.ma.array
函数屏蔽您的阵列,然后应用任何numpy
操作:您仍然可以访问您的原始数据: