Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按价值或参照my_ndarray[…]_Python_Arrays_Numpy - Fatal编程技术网

Python 按价值或参照my_ndarray[…]

Python 按价值或参照my_ndarray[…],python,arrays,numpy,Python,Arrays,Numpy,我尝试按值复制numpy.ndarray,方法如下: my_copy = my_original[...] 然而,这似乎分配了参考 虽然以下方法实际上复制了数据: my_copy[...] = my_original 这让我很困惑,因为我一直认为[…]只会引用普通数据,所以这两种方法都应该有效 这些行为的具体规则和原因是什么?在Numpy中复制数据的最佳实践是什么?您混合了两个概念,第一个: y = x[...] 只需将x的视图分配给变量名yx和y不相同,但它们共享相同的内存(因此更改将传

我尝试按值复制
numpy.ndarray
,方法如下:

my_copy = my_original[...]
然而,这似乎分配了参考

虽然以下方法实际上复制了数据:

my_copy[...] = my_original
这让我很困惑,因为我一直认为
[…]
只会引用普通数据,所以这两种方法都应该有效


这些行为的具体规则和原因是什么?在Numpy中复制数据的最佳实践是什么?

您混合了两个概念,第一个:

y = x[...]
只需将
x
的视图分配给变量名
y
x
y
不相同,但它们共享相同的内存(因此更改将传播到另一个内存)

x
的值指定给现有数组
y
。如果
x
y
不共享内存,这将复制这些值


一般来说,当您想要创建数组的新副本时,应该只使用
np.copy
np.ndarray.copy
。如果要将数组复制到现有数组中,则需要确保不会丢失对要将值复制到的数组的引用。因此,您不能重新分配变量名(因此
y[:]=x
y[…]=x
很好,因为您处理的是
y
的内容,但是
y=x
只是“覆盖”变量名,它不会修改原始
y
的内容。)

您混合了两个概念,第一个:

y = x[...]
只需将
x
的视图分配给变量名
y
x
y
不相同,但它们共享相同的内存(因此更改将传播到另一个内存)

x
的值指定给现有数组
y
。如果
x
y
不共享内存,这将复制这些值

一般来说,当您想要创建数组的新副本时,应该只使用
np.copy
np.ndarray.copy
。如果要将数组复制到现有数组中,则需要确保不会丢失对要将值复制到的数组的引用。因此,您不能将重新分配给变量名(因此
y[:]=x
y[…]=x
是可以的,因为您处理的是
y
的内容,但是
y=x
只是“覆盖”变量名,它不会修改原始
y
的内容)