遍历数组列表并通过迭代器更改列表元素

时间:2019-05-25 15:31:03

标签: python loops numpy

我遇到了一段代码,据我了解,该代码不起作用。我正在遍历Numpy数组的列表,并想剪切其内容。对于列表的操作,使用了迭代器。

据我了解,for循环的迭代器会在列表中分配值。因此,更改迭代器的值不应影响列表本身。 在所示的代码示例中,使用了numpy函数剪辑,并将迭代器分配给out参数以进行就地剪辑。 与此类似,我对某些数字也是如此,并使用就地运算符iadd。

#Clip the arrays
a=np.array([4,5,1])
b=np.array([-4,3,-2])
c=np.array([3,4,-5])
print("Array before clipping:",a,b,c)
for iterator in [a, b, c]:
   np.clip(iterator, -3,3,out=iterator)
print("Array after clipping:",a,b,c)

#doing in-place calculation
d=3
e=4
print("Numbers before clipping:",d,e)
for iterator2 in [d,e]:
    iterator2 = operator.iadd(iterator2,2)
print("Numbers after clipping:",d,e)

我希望列表不会更改。即使是就地操作也只能操纵迭代器的内存位置。但是,对于裁剪情况,列表会更改。怎么可能呢?

剪切前的数组:

[4 5 1] [-4  3 -2] [ 3  4 -5]

裁剪后的数组:

[3 3 1] [-3  3 -2] [ 3  3 -3]

剪切前的数字:

3 4

剪辑后的数字:

3 4

1 个答案:

答案 0 :(得分:0)

您应该考虑使用copy.copycopy.deepcopy