从numpy向量中随机替换索引

时间:2018-06-03 16:23:16

标签: python arrays numpy

我想创建一个方法,它将接收一个大小为1xN的numpy向量,其中包含几个NaN中的几个值,并将随机用NaN替换非纳米索引。我希望返回结果以及替换元素的索引。

def replace_index(array):
   index = np.random.randint(array.shape[1], size=1)
   array[index] = NaN
   return array, index

如何检查计算的指数是否已经是纳米?

1 个答案:

答案 0 :(得分:2)

您可以使用numpy.wherenumpy.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.]])