blob: 01d0bf2ff0f40a06e1460317532e6f9924017124 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
def xpxp_to_xxpp(S):
"""Permutes the entries of the input from xpxp ordering to xxpp ordering.
Args:
S (array): input even dimensional square matrix or vector
Returns:
(array): permuted matrix or vector
"""
shape = S.shape
n = shape[0]
if n % 2 != 0:
raise ValueError("The input array is not even-dimensional")
n = n // 2
ind = np.arange(2 * n).reshape(-1, 2).T.flatten()
if len(shape) == 2:
if shape[0] != shape[1]:
raise ValueError("The input matrix is not square")
return S[:, ind][ind]
return S[ind]
|