的说明已经在这里是正确的。但是,因为我想以类似的方式滥用python,所以我将提交此方法作为解决方法。
从列表中调用特定元素直接返回列表中该元素的值的副本。即使复制列表的子列表也会返回对包含值的副本的数组的新引用。考虑下面这个例子:
>>> a = [1, 2, 3, 4]
>>> b = a[2]
>>> b
3
>>> c = a[2:3]
>>> c
[3]
>>> b=5
>>> c[0]=6
>>> a
[1, 2, 3, 4]
无论b
,值只复制,也不c
,从a
复制子列表,能够改变a
值。尽管它们有共同的起源,但没有联系。
但是,numpy数组使用“raw-er”内存分配并允许返回数据视图。视图允许以不同方式表示数据,同时保持与原始数据的关联。因此,一个工作示例是
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> b = a[2]
>>> b
3
>>> b=5
>>> a
array([1, 2, 3, 4])
>>> c = a[2:3]
>>> c
array([3])
>>> c[0]=6
>>> a
array([1, 2, 6, 4])
>>>
虽然提取单个元件仍然值只,保持元件2
的阵列视图被引用到原始元素的a
2
副本(虽然现在元件的c
0
),并且对c
的值进行的更改也会更改为a
。
Numpy ndarray
s有许多不同的类型,包括一个通用的对象类型。这意味着您可以为几乎任何类型的数据维护此“引用”行为,而不仅仅是数值。
来源
2016-09-08 18:26:46
KDN
没有语法来完成你所要求的,但是有很多方法可以修改列表的一部分。如果你问一个关于你正在使用的具体问题的问题,有人会想出最直观,最优雅的解决方案。 – alexis