我偶尔使用numpy
,并且试图使我对向量进行矢量化处理变得更加聪明。我正在阅读一些代码,并试图理解以下内容的语义:
arr_1[:] = arr_2
在这种情况下,
我知道在
arr[:, 0]
中,我们正在选择数组的第一列,但是我对arr_1[:] = arr_2
和arr_1 = arr_2
之间的区别感到困惑 最佳答案
您的问题涉及基本Python语法和numpy
特定细节的混合。在很多方面,列表是相同的,但不完全相同。arr[:, 0]
返回arr
的第一列(一个 View ),arr[:,0]=10
将该列的值设置为10。arr[:]
返回arr
(alist[:]
返回列表的副本)。 arr[:]=arr2
执行就地替换;将arr
的值更改为arr2
的值。 arr2
的值将根据需要广播和复制。arr=arr2
设置arr
变量指向的对象。现在arr
和arr2
指向同一事物(无论是数组,列表还是其他任何事物)。arr[...]=arr2
在复制所有数据时也可以使用
在交互式 session 中进行这些操作。尝试使用arr2
形状的变体来查看如何广播值。还要检查id(arr)
以查看变量指向的对象。和arr.__array_interface__
来查看数组的数据缓冲区。这样可以帮助您将 View 与副本区分开。
关于python - arr [:] in assignment in numpy?是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35713891/