我想在Python中对列表(2D数组)target
的行进行随机/置换。
我创建了列表train
,然后按np.random.shuffle()
对其进行随机播放,并使用它来按相同顺序置换target
行的索引。
我知道我不能只写一个new_list = old_list来将一个列表复制到其他列表,所以(我认为)我使用了一种正确的方法将target
复制到cop
{{1提到here on SO.
但即使在运行下面的代码后,我也无法弄清楚为什么cop = [row[:] for row in target]
在循环期间改变了值。因此,cop
并不是我所期望的。
我正在尝试的代码:
target
示例输出:
import numpy as np
train = [0, 1, 2, 3, 4]
print("train: ", train)
target = np.hstack([np.arange(5).reshape(5,1), np.arange(100, 105).reshape(5,1),
np.arange(200, 205).reshape(5,1)])
print(target)
np.random.shuffle(train)
print("Shuffled train: ", train)
cop = [row[:] for row in target]
for i in range(len(train)):
print(train[i], '-----', cop[train[i]], '-------', cop)
target[i] = list(cop[train[i]])
print("Target: ", target)
print("Cop: ", cop)
处理完成,退出代码为0