Python Numpy:随机选择9/10个元素并保存剩余的元素

Python Numpy:随机选择9/10个元素并保存剩余的元素,python,numpy,Python,Numpy,我正在尝试编写一个自定义函数,该函数将10个元素的数组作为输入,然后随机选择9个元素保存在一个对象中,其余元素保存在另一个对象中。 我编写了一个函数,该函数在所有元素都是唯一的情况下工作: x = np.arange(10) def myfunc(x): X = np.random.choice(x, 9, replace=False) y = np.setdiff1d(x, X) return X, y X, y = myfunc(x) print(X)

我正在尝试编写一个自定义函数,该函数将10个元素的数组作为输入,然后随机选择9个元素保存在一个对象中,其余元素保存在另一个对象中。 我编写了一个函数,该函数在所有元素都是唯一的情况下工作:

x = np.arange(10)

def myfunc(x):
    X = np.random.choice(x, 9, replace=False)
    y = np.setdiff1d(x, X)
    return X, y
    
X, y = myfunc(x)

print(X)
print(y)
只要元素是唯一的,这种方法就可以工作,但是如果数组恰好有重复的值,setdiff恐怕无法完成这项工作。 是否有更优雅的方法将剩余值分配给它自己的对象?

将numpy作为np导入
从随机导入randint
x=np.arange(10)
def myfunc(x):
索引=randint(0,len(x)-1)
返回np.concatenate((x[:index],x[:index+1])),x[索引]
十、 y=myfunc(X)
打印(X)
打印(y)

为什么不随机选择一个元素,然后从原始数组中删除它?我该怎么做?重要的是,我不更改输入数组,而是创建新的对象。不幸的是,这并没有按预期工作,X并不总是长度为9,并且还从X重复采样元素。y也包含在X中。