2

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

进一步解释我的情况:我有需要存储在数组中的数据。假设我有 8 行数据。每行的元素个数不相等,所以我的矩阵行长度需要和最长的行一样长。在其他行中,某些元素不会被填充。我不想使用零,因为我的一些数据实际上可能是零。

我意识到我可以使用一些我知道我的数据永远不会使用的值,但 nans 肯定更清晰。只是想知道这是否会导致以后的处理出现任何问题。我意识到我需要使用nanmax而不是max等等。

4

2 回答 2

5

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

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

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

但是,根据您的需要,您可以查看numpy.ma掩码数组或scipy.sparse稀疏矩阵。不过,它可能合适,也可能不合适。无论哪种方式,您都可能需要使用相应模块中的不同功能,而不是普通的 numpy ufunc。

于 2017-02-27T14:26:45.413 回答
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.zeros 一样简单地使用 np.nans:

np.nans(10)
于 2020-08-05T13:38:21.877 回答