哔哔one
在尝试寻找解决方案之前,请确保您了解问题。In [27]: a, b = np.arange(10), np.arange(2)In [28]: f = lambda a: a[2:4]In [29]: f(a)Out[29]: array([2, 3])In [30]: f(a) = b File "<ipython-input-30-df88b52b4d3c>", line 1 f(a) = b ^SyntaxError: can't assign to function call这个错误是 Python 的一个基本错误。语法问题。但是看看当我们使用索引时会发生什么。您所做的切片f是:In [31]: a[2:4]Out[31]: array([2, 3])In [32]: a.__getitem__(slice(2,4))Out[32]: array([2, 3])所需的分配切片是:In [33]: a[2:4] = bIn [34]: a.__setitem__(slice(2,4),b)In [35]: aOut[35]: array([0, 1, 0, 1, 4, 5, 6, 7, 8, 9])请注意,setitemtakeb作为参数。 a.__setitem__(slice(2,4))=b会遇到同样的语法错误。这种用法setitem允许我们使用高级索引(列表):In [38]: a[[0,2]] = bIn [39]: a.__setitem__([0,2],b)如果这不起作用:In [40]: a[[0,2]][...] = b因为它实际上是a.__getitem__([0,2]).__setitem__(Ellipsis,b)。set 修改 get 生成的副本。仅当第一个索引生成view.