1

在此处输入图像描述我正在编写脚本来实现感知器学习算法。但是,我无法在 numpy 数组中随机选取一个元素。而且我不知道 numpy 中是否有内置函数可以做到这一点。

def error_rate(w1, w2):
    W = error(w1, w2)
    return((W.sum())/W.size)
def error(w1, w2):
    W = w1!= w2
    #print(W)
    return W

#test of the function 'error rate'
a = np.array([0,0,0,0,1])
b = np.array([0,1,0,0,1])
print (error_rate(a, b))
print(np.random.choice(np.nonzero(error(a, b)), 1))

在上面的代码中,我实际上是想检查 in 中的数字是否与 ina中具有相同索引的数字相同bk并从满足的索引中随机选取a[k]!=b[k]。但它不起作用。

4

2 回答 2

1

这里的问题是np.nonzero返回一个只需要第一个元素的元组;这里,

np.random.choice(np.nonzero(a != b)[0])

会做的工作。您可以通过使用np.flatnonzero来避免选择它;也就是上面等价于

np.random.choice(np.flatnonzero(a != b))
于 2018-03-25T10:53:14.123 回答
1

您可以使用更紧凑的

x = np.random.choice(np.where(a != b)[0])
于 2018-03-25T10:56:51.730 回答