Update: I think Part covers all the manipulations you need to do on the rows and columns of your matrix:
mtrx = Array[Subscript[a, ##] &, {4, 3}];
Grid[Thread[{{HoldForm[mtrx], HoldForm[mtrx[[{2, 1, 4, 3}, All]]],
HoldForm[mtrx[[All, {2, 1, 3}]]], HoldForm[mtrx[[{2, 1, 4, 3}, {2, 1, 3}]]],
HoldForm[mtrx[[{1, 2, 1, 2, 1}, {3, 2}]]]},
TableForm /@ {mtrx, mtrx[[{2, 1, 4, 3}, All]],
mtrx[[All, {2, 1, 3}]], mtrx[[{2, 1, 4, 3}, {2, 1, 3}]],
mtrx[[{1, 2, 1, 2, 1}, {3, 2}]]}}],
Spacings -> {1, 1}, Frame -> All]

If data
is your data matrix and rowClusterList
and columnClusterList
are the partitions corresponding to the row and column clusterings, you can re-arrange the rows and columns of your data matrix using:
data[[Flatten@rowClusterList,Flatten@columnClusterList]]
Original post based on guessing the details of the problem --( keeping for now hoping it may prove relevant and useful based on expected updates by the OP to his post.)
A small example for illustration
(* a short list of countries *)
(* countryList=RandomChoice[CountryData[#, "Name"] & /@ CountryData["Countries"], {10}] *)
countryList = {"Cyprus", "Macau", "Barbados", "Kuwait", "Hungary",
"El Salvador", "Jamaica", "Oman", "Myanmar", "Peru"};
ticks = Thread[{Range[10], countryList}];
(* example data *)
data = RandomInteger[{5}, {10, 10}];
TableForm[data, TableHeadings -> {countryList, Rotate[#, 90 Degree] & /@ countryList}]

ArrayPlot[data, ColorFunction -> "Rainbow", Mesh -> All,
Frame -> True, FrameTicksStyle -> Opacity[1],
FrameTicks -> {{ticks, None}, {ticks /. s_String :> Rotate[s, 90 Degree], None}},
ImagePadding -> {{60, 10}, {60, 10}}]

(* example clustering of the rows and columns:*)
rowClusters = {{2, 3, 5}, {1, 9, 4}, {7, 8, 10, 6}};
columnClusters = {{10, 2, 3, 9}, {1, 6, 8, 5}, {7, 4}};
Reshuffle the data matrix and the row/column indices to match the new row and column orderings:
newdata = data[[Flatten@rowClusters, Flatten@columnClusters]];
xticks = Thread[{Range[Length[data]], countryList[[Flatten@rowClusters]]}];
yticks = Thread[{Range[Length[Transpose@data]],
countryList[[Flatten@columnClusters]]}];
TableForm[newdata, TableHeadings -> {countryList[[Flatten@rowClusters]],
Rotate[#, 90 Degree] & /@ countryList[[Flatten@columnClusters]]}]

ArrayPlot[newdata, ColorFunction -> "Rainbow",
Mesh -> {Join[{0}, Accumulate@(Length /@ rowClusters), {Length[data]}],
Join[{0}, Accumulate@(Length /@ columnClusters), {Length[data]}]},
MeshStyle -> {Directive[GrayLevel[.1], Thickness[.01]],
Directive[GrayLevel[.1], Thickness[.01]]},
Frame -> True, FrameTicksStyle -> Opacity[1],
FrameTicks -> {{xticks, None}, {yticks /. s_String :> Rotate[s, 90 Degree], None}},
ImagePadding -> {{60, 10}, {60, 10}}]
