通过复制(Python)

时间:2018-06-07 09:15:22

标签: python python-3.x copy

我想在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

0 个答案:

没有答案