【问题标题】:Numpy array changing list elementNumpy数组更改列表元素
【发布时间】:2019-11-20 20:46:44
【问题描述】:
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 的第一个元素会发生变化?以及如何防止它发生变化?

【问题讨论】:

标签: python arrays list numpy


【解决方案1】:

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

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

L1.append(a.copy())

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多