使用NAN的Python阵列初始化(PREALLATION)



我想初始化一个会容纳一些数据的数组。我创建了一个随机矩阵(使用np.empty),然后将其乘以np.nan。有什么问题吗?还是我应该坚持更好的做法?

进一步解释我的情况:我有数据需要存储在数组中。说我有8行数据。每行的元素数量不相等,因此我的矩阵行长必须与最长的行一样长。在其他行中,某些元素将无法填充。我不想使用零,因为我的某些数据实际上可能是零。

我意识到我可以使用一些我知道我的数据永远不会的价值,但是NAN绝对更清楚。只是想知道以后是否会引起任何问题。我意识到我需要使用nanmax而不是max等。

我创建了一个随机矩阵(使用np.Empty),然后由NP.Nan乘以它。有什么问题吗?还是我应该坚持更好的做法?

您可以使用np.full,例如:

np.full((100, 100), np.nan)

然而,根据您的需求,您可以查看numpy.ma的蒙版数组或scipy.sparse的稀疏矩阵。不过,它可能不合适。无论哪种方式,您可能需要使用相应模块而不是普通的numpy ufuncs。

我喜欢做的一种可能不是最好的方法,但很容易记住是在这种方式中添加'nans'方法:

import numpy as np
def nans(n):
    return np.array([np.nan for i in range(n)])
setattr(np,'nans',nans)

现在您可以简单地使用np.nans,就好像是np.zeros:

np.nans(10)

最新更新