我需要的是一种方法来获取“fancy indexing”(y = x [[0,5,21]])的视图而不是副本。
我有一个数组,但我想能够使用该数组的子集(由索引列表指定),以便在该子集中进行更改也可以正确地放置在大数组中的相应位置。 如果我只想对前10个元素做些什么,我可以使用常规切片y = x [0:10]。那很好用,因为常规切片返回视图。问题是,如果我不想要0:10,而是任意一组索引,是否有一种方法可以做到这一点?
我有一个数组,但我想能够使用该数组的子集(由索引列表指定),以便在该子集中进行更改也可以正确地放置在大数组中的相应位置。 如果我只想对前10个元素做些什么,我可以使用常规切片y = x [0:10]。那很好用,因为常规切片返回视图。问题是,如果我不想要0:10,而是任意一组索引,是否有一种方法可以做到这一点?
x[ii] = y
调用了x.__setitem__(ii, y)
,所以没有涉及到复制,尽管你使用了一个索引数组。的确,x[ii]
返回一个副本,但这会调用x.__getitem__(ii)
,这是另一回事。 - a_guest