如何在numpy数组中随机选取一个元素?

时间:2018-03-25 10:26:13

标签: python python-3.x numpy numpy-ndarray

enter image description here我正在编写脚本以实现感知器学习算法。但是,我在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))

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

2 个答案:

答案 0 :(得分:1)

这里的问题是$someArray[] =返回一个元组,你只需要第一个元素;这里,

np.nonzero

会做这个工作。您可以使用np.flatnonzero来避免挑选出来;也就是说,上述内容相当于

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

答案 1 :(得分:1)

您可以使用更紧凑的

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