【发布时间】:2018-04-26 18:54:38
【问题描述】:
我有一个二维 numpy 数组,将其解释为一个网格,并且想要置换元素的一个子集。 更准确地说,一条边映射到一条边,一个角映射到一个角。
-
np.random.shuffle可以完成这项工作,只要元素的任何排列都可以。
我可以通过以下方式进入角落:
a = np.arange(16).reshape((4,4))
a[[0,0,-1,-1],[0,-1,0,-1]]
但是,当我打电话时
np.random.shuffle(a[[0,0,-1,-1],[0,-1,0,-1]])
数组没有改变。阅读https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html,我发现上面使用了Advanced Slicing,它返回一个副本,而不是一个视图。 但是这个副本是原地洗牌的,所以没有结果要分配给原始数组。
所以问题是,我如何置换所选索引的元素?
【问题讨论】: