gpt4 book ai didi

python - 将两个一维数组连接成一个二维数组,并在Python中重新洗牌后再次将其打破

转载 作者:行者123 更新时间:2023-11-30 22:20:04 26 4
gpt4 key购买 nike

我有这两个一维数组 A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 及其标签 L = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0];其中 L[i]A[i] 的标签。

目标:我需要随机洗牌两个一维数组,使其标签保持在同一索引中。

例如:随机播放后:
A= [2, 4, 9, 1, 3, 6, 0, 7, 5] 那么L= [7, 5, 0, 8, 6, 3, 9, 2, 4]A[i]L[i] code> 应与原始代码保持一致。

我正在考虑将上述两个一维数组连接成一个二维数组并重新排列它,然后再次分离这两个一维数组。它不起作用。我陷入了重新洗牌的困境。

下面是我尝试过的代码

import numpy as np
import random
# initializing the contents
A = np.arange(0,10)
length= len(A)
print length
print A

labels = np.zeros(10)

for index in range(length):
labels[index] = A[length-index-1]

print labels
# end, contents ready

combine = []
combine.append([A, labels])
print combine
random.shuffle(combine)
print "After shuffle"
print combine

最佳答案

如果您使用 Numpy,只需使用 numpythonic 方法。使用 np.column_stack 创建对,并使用 numpy.random.shuffle 函数对它们进行打乱:

pairs = np.column_stack((A, L))
np.random.shuffle(pairs)

演示:

In [16]: arr = np.column_stack((A, L))

In [17]: np.random.shuffle(arr)

In [18]: arr
Out[18]:
array([[4, 5],
[5, 4],
[7, 2],
[1, 8],
[3, 6],
[6, 3],
[8, 1],
[2, 7],
[9, 0],
[0, 9]])

如果你想获取数组,只需做一个简单的索引:

In [19]: arr[:,0]
Out[19]: array([4, 5, 7, 1, 3, 6, 8, 2, 9, 0])

In [20]: arr[:,1]
Out[20]: array([5, 4, 2, 8, 6, 3, 1, 7, 0, 9])

关于python - 将两个一维数组连接成一个二维数组,并在Python中重新洗牌后再次将其打破,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com