我在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]
大于零的情况下选择这两个值。我该如何进行拣选?
答案 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;
}
当然,如果不能满足条件,它将永远循环。