我有一个简单的问题,但无法解决。我有一个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 axis
和y 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
的整个大小的同时进行置换。
如何执行此全局置换?
我相信这称为“就地置换”?
希望您理解我的要求。
如您所知,问题是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]