numpy数组更改列表元素

时间:2019-11-20 20:46:44

标签: python arrays list numpy

import numpy as np  
a = np.arange(20) 
print('a:', a) 
L1 = []
L1.append(a)
print('L1:', L1)
a[-8:17:1] =  1
print('a:', a)
L1.append(a)
print('L1:', L1) 

上面的输出是-

a: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
L1: [array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19])]
a: [ 0  1  2  3  4  5  6  7  8  9 10 11  1  1  1  1  1 17 18 19]
L1: [array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  1,  1,  1,  1,  1,
       17, 18, 19]), array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11,  1,  1,  1,  1,  1,
       17, 18, 19])]

为什么L1的第一个元素发生变化?以及如何防止其更改?

1 个答案:

答案 0 :(得分:0)

变量a不是简单的数据类型(np.array),因此,在分配或根据情况将其附加到变量时,您将不会附加副本,而是对对象的引用。因此,对对象的任何更改都会在引用对象的任何地方得到反映。

使用a.copy()应该可以解决您的问题:

L1.append(a.copy())
相关问题