如何在 numpy 数组中随机选取一个元素?
How to pick up an element randomly in a numpy array?
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
中具有相同索引的数字相同。并从满足a[k]!=b[k]
的索引k
中随机选取。但是没用。
这里的问题是 np.nonzero
returns 一个只需要第一个元素的元组;这里,
np.random.choice(np.nonzero(a != b)[0])
会完成这项工作。您可以改用 np.flatnonzero
来避免挑选出来;也就是说,上面相当于
np.random.choice(np.flatnonzero(a != b))
您可以使用更紧凑的
x = np.random.choice(np.where(a != b)[0])
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
中具有相同索引的数字相同。并从满足a[k]!=b[k]
的索引k
中随机选取。但是没用。
这里的问题是 np.nonzero
returns 一个只需要第一个元素的元组;这里,
np.random.choice(np.nonzero(a != b)[0])
会完成这项工作。您可以改用 np.flatnonzero
来避免挑选出来;也就是说,上面相当于
np.random.choice(np.flatnonzero(a != b))
您可以使用更紧凑的
x = np.random.choice(np.where(a != b)[0])