我想初始化一个包含一些数据的数组。我创建了一个随机矩阵(使用np.empty
),然后乘以np.nan
。那有什么不对吗?或者,我应该坚持使用更好的做法吗?
进一步解释我的情况:我需要存储在数组中的数据。说我有8行数据。每行中元素的数量不相等,因此我的矩阵行长度需要与最长行一样长。在其他行中,某些元素将不会被填充。我不想使用零,因为我的一些数据实际上可能是零。
我意识到我可以使用一些价值我知道我的数据永远不会,但是nans肯定更清晰。只是想知道这是否会导致以后处理任何问题。我意识到我需要使用nanmax
而不是max
等等。
答案 0 :(得分:2)
我创建了一个随机矩阵(使用np.empty),然后将其乘以np.nan。那有什么不对吗?或者,我应该坚持使用更好的做法吗?
您可以使用np.full
,例如:
np.full((100, 100), np.nan)
但是根据您的需要,您可以查看numpy.ma
的掩码数组或scipy.sparse
稀疏矩阵。但是,它可能适合也可能不适合。无论哪种方式,您可能需要使用相应模块中的不同函数,而不是普通的numpy ufunc。
答案 1 :(得分:0)
我喜欢这样做的一种方法可能不是最好的,但很容易记住的是,用这种方法向numpy对象添加了一个'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)