我想初始化一个会容纳一些数据的数组。我创建了一个随机矩阵(使用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)