After some tests, I see that in fact “copy.copy” always gives something that will also change, but “tensor.clone” seems to be the right way to compare:
Example:
data_copy = copy.copy(data);
data_clone = data.clone();

data[:, index_list] = data[:, index_list] + 1;
print(torch.all(data == data_copy));
#True

print(torch.all(data == data_clone));
#False