Call np.sortwith the keyword argument axisset to None, then cancel it by slicing:
>>> a = np.array([[1, 0.639, 0.07], [0, 1, 0.51], [0, 0, 1]])
>>> a
array([[ 1. , 0.639, 0.07 ],
[ 0. , 1. , 0.51 ],
[ 0. , 0. , 1. ]])
>>> np.sort(a, axis=None)[::-1]
array([ 1. , 1. , 1. , 0.639, 0.51 , 0.07 , 0. , 0. , 0. ])
If you want to know where each value comes from, first use np.argsort, then guess the smoothed indexes:
>>> idx = np.argsort(a, axis=None)[::-1]
>>> rows, cols = np.unravel_index(idx, a.shape)
>>> a_sorted = a[rows, cols]
>>> for r, c, v in zip(rows, cols, a_sorted):
... print 'ABC'[r], '&', 'ABC'[c], ':', v
...
C & C : 1.0
B & B : 1.0
A & A : 1.0
A & B : 0.639
B & C : 0.51
A & C : 0.07
C & B : 0.0
C & A : 0.0
B & A : 0.0