我想创建一个方法,它将接收一个大小为1xN的numpy向量,其中包含几个NaN中的几个值,并将随机用NaN替换非纳米索引。我希望返回结果以及替换元素的索引。
def replace_index(array):
index = np.random.randint(array.shape[1], size=1)
array[index] = NaN
return array, index
如何检查计算的指数是否已经是纳米?
答案 0 :(得分:2)
您可以使用numpy.where
和numpy.isnan
找到值不是nan
的索引,然后使用np.random.choice
选择一个不是nan
的索引:
array = np.array([[1,np.nan,2,np.nan,3,4]])
not_nan_idx = np.random.choice(np.where(~np.isnan(array))[1])
not_nan_idx
# 2
array[0, not_nan_idx] = np.nan
array
# array([[ 1., nan, nan, nan, 3., 4.]])