python中的行内排列

python中的行内排列,python,numpy,Python,Numpy,我有两个成对的数组,这意味着两个数组中的元素1需要具有相同的索引。我想排列这些元素。目前,我尝试了np.random.permutation,但似乎没有得到正确的答案 例如,如果这两个数组是[1,2,3]和[4,5,6],则一种可能的排列将是[4,2,3]和[1,5,6] 您可以使用choice对数组进行stack并为每行选择一个随机列 设置 最后,要索引: v[np.arange(v.shape[0]), choices] 运行上面代码的第1步: a Out[188]: array([4

我有两个成对的数组,这意味着两个数组中的元素1需要具有相同的索引。我想排列这些元素。目前,我尝试了np.random.permutation,但似乎没有得到正确的答案


例如,如果这两个数组是[1,2,3]和[4,5,6],则一种可能的排列将是[4,2,3]和[1,5,6]

您可以使用
choice
对数组进行
stack
并为每行选择一个随机列

设置


最后,要索引:

v[np.arange(v.shape[0]), choices]

运行上面代码的第1步:

a
Out[188]: array([4, 2, 6])
b
Out[189]: array([1, 5, 3])
运行2:

a
Out[191]: array([4, 5, 3])    
b
Out[192]: array([1, 2, 6])

您可以使用
np。选择

toss=np.random.randint(0,2,len(x))
print(np.choose(toss,[x,y]))
print(np.choose(toss,[y,x]))
#[1 5 6]
#[4 2 3]
a=np.array([1, 2, 3])
b=np.array([4, 5, 6])
random_arr=np.random.choice([0, 1], size=(len(a),)) # Generate a random array of 0s and 1s, let's say arr([0,0,1])
a1=random_arr*a + (1-random_arr)*b                  # arr([0,0,1])*arr([1,2,3]) + arr([1,1,0])*arr([4,5,6]) = arr([4, 5, 3])
b1=random_arr*b + (1-random_arr)*a                  # arr([0,0,1])*arr([4,5,6]) + arr([1,1,0])*arr([1,2,3]) = arr([1, 2, 6])
a=a1
b=b1
a
Out[188]: array([4, 2, 6])
b
Out[189]: array([1, 5, 3])
a
Out[191]: array([4, 5, 3])    
b
Out[192]: array([1, 2, 6])
toss=np.random.randint(0,2,len(x))
print(np.choose(toss,[x,y]))
print(np.choose(toss,[y,x]))
#[1 5 6]
#[4 2 3]