【发布时间】:2017-09-04 23:31:39
【问题描述】:
首先让我们把它放在一边: 我已经知道这里讨论的解决方案:Create NumPy array from another array by specifying rows and columns
假设我有一个数组
test = np.arange(12).reshape((3,4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
我想把它的行和列重新排列成test2
array([[ 1, 0, 3, 2],
[ 9, 8, 11, 10],
[ 5, 4, 7, 6]])
我现在使用的解决方案与上面链接中已经回答的解决方案相同:
test2 = test[[0,2,1]][:,[1,0,3,2]]
但是,此解决方案创建了一个不必要的数据中间副本:它首先创建一个仅包含混洗行的副本test[[0,2,1]],然后创建第二个包含混洗列的副本。对于这么小的阵列,没有人关心,但如果阵列是巨大的,这个解决方案感觉不是最理想的。 numpy 是否允许行和列同时洗牌?看起来像 test[[0,2,1],[1,0,3,2]] 的东西,除了 numpy 不会那样解释这个操作......
【问题讨论】: