numpy:NaN 和掩码数组之间的区别
numpy: difference between NaN and masked array
在 numpy 中有两种标记缺失值的方法:我可以使用 NaN
或 masked array
。我知道使用 NaN(可能)更快,而掩码数组提供更多功能(哪个?)。
我想我的问题是我是否/什么时候应该使用一个而不是另一个?
np.NaN
在 regular array vs. a masked array
中的用例是什么?
我确定答案一定在那里,但我找不到...
据我了解,NaN 表示任何非数字的内容,而掩码数组标记缺失值或数字但对您的数据集无效的值。
希望对您有所帮助。
区别在于两个结构保存的数据。
使用regular array with np.nan
,无效值后面没有数据。
使用 masked array,您可以初始化一个完整的数组,然后对其应用掩码,使某些值看起来无效。 numpy.ma
模块提供的方法使您不必处理 np.nan
行为(例如,np.nan == np.nan
始终是 False
,等等)
如果您有一个数组,您永远不需要在无效单元格中放置值,请使用前者。您始终可以使用 np.nan
和一些索引技术来复制复杂的操作,但这就是掩码数组的用途。
请记住,jrmyp 提到的奇怪 np.nan 行为包括意外结果,例如在使用 statsmodels(例如 ttest)或 numpy 模块(例如 average)的函数时。根据经验,这些函数中的大多数都有针对 NaN 的变通方法,但它有可能让您暂时发疯。这似乎是尽可能屏蔽数组的原因。
在 numpy 中有两种标记缺失值的方法:我可以使用 NaN
或 masked array
。我知道使用 NaN(可能)更快,而掩码数组提供更多功能(哪个?)。
我想我的问题是我是否/什么时候应该使用一个而不是另一个?
np.NaN
在 regular array vs. a masked array
中的用例是什么?
我确定答案一定在那里,但我找不到...
据我了解,NaN 表示任何非数字的内容,而掩码数组标记缺失值或数字但对您的数据集无效的值。
希望对您有所帮助。
区别在于两个结构保存的数据。
使用regular array with np.nan
,无效值后面没有数据。
使用 masked array,您可以初始化一个完整的数组,然后对其应用掩码,使某些值看起来无效。 numpy.ma
模块提供的方法使您不必处理 np.nan
行为(例如,np.nan == np.nan
始终是 False
,等等)
如果您有一个数组,您永远不需要在无效单元格中放置值,请使用前者。您始终可以使用 np.nan
和一些索引技术来复制复杂的操作,但这就是掩码数组的用途。
请记住,jrmyp 提到的奇怪 np.nan 行为包括意外结果,例如在使用 statsmodels(例如 ttest)或 numpy 模块(例如 average)的函数时。根据经验,这些函数中的大多数都有针对 NaN 的变通方法,但它有可能让您暂时发疯。这似乎是尽可能屏蔽数组的原因。