我有一个列表y和一个numpy矩阵X。它们对应的是。y[i]与X[i]相关。y由1或0组成。我希望从X中随机选择a数据实例,其中对应的y值等于1,其中a是常量。
发布于 2017-03-21 07:32:56
这个应该就行了
import numpy as np
array = [1,2,3,4]
number = np.random.choice(array, replace = False)
print(number)
idx = np.where(array==number)[0]
print(idx)发布于 2017-03-21 07:34:27
我假设您希望选择样本中y为1的整行。您可以随机抽取对应y值为1的行,如下所示:
import numpy as np
from itertools import compress
from random import sample
a = 2
y = [0, 1, 1, 0, 1, 0, 1, 0, 1, 1]
X = np.random.rand(10, 3)
picked = sample(list(compress(X, y)), a)itertools.compress用于创建一个只包含行的列表,其中对应的y是1。然后使用sample函数从该列表中随机抽取大小为a的样本。
发布于 2017-03-21 07:37:25
你可以这样做:
import numpy as np
X=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]])
y=np.array([1,0,1,1,0])
a=2
mat=X[y==1]
rows = np.random.choice(len(mat), size=a,replace=False)
mat=mat[rows,:]
print(mat)
[[ 7 8 9]
[10 11 12]]在上面的代码中,mat=X[y==1]选择y的对应值为1的所有行,然后np.random.choice(len(mat), size=a,replace=False)随机选择a不同的行。
https://stackoverflow.com/questions/42915776
复制相似问题