从python中的向量中随机选择两个大于零的值

时间:2017-02-09 14:35:23

标签: python vector

我在python中有一个向量,我想从向量X_valid(大小为9维)中随机选择两个值,条件是这两个值不为零。我可以从我的向量中轻松选择两个值:

indx1 = randint(0, 8)
indx2 = randint(0, 8)
X_valid[0][indx1] = 0
X_valid[0][indx2] = 0

我的矢量样本如下:[13, 0, 0, 0, 11, 11, 0, 3, 0]。 但是我想知道,如何在条件X_valid[0][indx1 or indx2]大于零的情况下选择这两个值。我该如何进行拣选?

2 个答案:

答案 0 :(得分:3)

一种方法是获取非零元素的索引并从中进行选择。

non_zero = [i for i, x in enumerate(X_valid) if x != 0]
X_valid[0][random.choice(non_zero)] = 0

但是,这种方法要求您在再次选择之前从non_zero中删除第一个索引,如果有很多非零元素可供选择,则可能相对昂贵。

另一种方法是生成随机索引,直到找到非零元素。

c = 2
while c > 0:
    index = randint(0,8)
    if X_valid[0][indx] == 0:
        continue
    X_valid[0][indx] = 0
    c = c - 1

假设有很多非零元素,你不可能随机选择多个零元素。

(两种方法都假设足够的非零元素可供选择;第一种方法可以更容易地检测何时不是这种情况。)

答案 1 :(得分:1)

这样的事情很典型:

ul.ui-autocomplete li:focus a
{
border:none;
background-color: #6695CF;
background-image: none;
}

当然,如果不能满足条件,它将永远循环。