我遇到了一段代码,据我了解,该代码不起作用。我正在遍历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
答案 0 :(得分:0)
您应该考虑使用copy.copy
或copy.deepcopy