我偶尔使用numpy,并且试图使我对向量进行矢量化处理变得更加聪明。我正在阅读一些代码,并试图理解以下内容的语义:

arr_1[:] = arr_2

在这种情况下,

我知道在arr[:, 0]中,我们正在选择数组的第一列,但是我对arr_1[:] = arr_2arr_1 = arr_2之间的区别感到困惑

最佳答案

您的问题涉及基本Python语法和numpy特定细节的混合。在很多方面,列表是相同的,但不完全相同。
arr[:, 0]返回arr的第一列(一个 View ),arr[:,0]=10将该列的值设置为10。
arr[:]返回arr(alist[:]返回列表的副本)。 arr[:]=arr2执行就地替换;将arr的值更改为arr2的值。 arr2的值将根据需要广播和复制。
arr=arr2设置arr变量指向的对象。现在arrarr2指向同一事物(无论是数组,列表还是其他任何事物)。
arr[...]=arr2在复制所有数据时也可以使用

在交互式 session 中进行这些操作。尝试使用arr2形状的变体来查看如何广播值。还要检查id(arr)以查看变量指向的对象。和arr.__array_interface__来查看数组的数据缓冲区。这样可以帮助您将 View 与副本区分开。

关于python - arr [:] in assignment in numpy?是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35713891/

10-11 16:21