Python:使用置换向量对矩阵重新排序,但保持矩阵的原始大小

问题描述 投票:0回答:1

我有一个简单的问题,但无法解决。我有一个C_temp 16x16矩阵(size = 16),从另一个矩阵中复制过来。

C_temp = np.zeros((size, size))                                                                                
C_temp = np.copy(C_in)

然后,我有一个置换列表(或numpy数组,我不知道这是否重要):

print('index_reorder =', index_reorder)给出:

index_reorder = ', array([2, 4, 0, 5, 1, 3, 7, 8]))

我想进行由index_reorder沿x axisy axis指示的排列。

      C_temp = np.copy(C_in)
      C_temp[:,:] = C_temp[:, index_reorder]
      C_temp[:,:] = C_temp[index_reorder, :]
      C_new = np.copy(C_temp)

但是不幸的是,新矩阵C_new的大小减小为8x8。

这不是我想要得到的:我想为C_new矩阵(16x16)保持相同的大小,即在保持排列矩阵C_temp的整个大小的同时进行置换。

如何执行此全局置换?

我相信这称为“就地置换”?

希望您理解我的要求。

python arrays numpy permutation reorderlist
1个回答
1
投票

如您所知,问题是index_reorder仅包含重新排序的元素。我建议在最后添加其余元素,以便包含所有元素。

all_indices = np.array(range(terms_fiducial.size))
other_indices = np.setdiff1d(all_indices, index_reorder)
all_indices_reorder = np.concatenate([index_reorder, other_indices])

然后按照您的步骤继续:

terms = terms_fiducial[all_indices_reorder]
© www.soinside.com 2019 - 2024. All rights reserved.