Mercurial > hg > tvii
annotate tvii/transpose.py @ 71:9d55e0299c3f
fix scoping for python 3.6
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 17 Dec 2017 13:19:30 -0800 |
parents | 4bf2145c16f8 |
children |
rev | line source |
---|---|
67
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
1 from .unique import unique |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
2 from .unique import NotUnique |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
3 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
4 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
5 class NotAMatrix(Exception): |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
6 """marker exception for matrix conformity""" |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
7 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
8 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
9 def transpose(A): |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
10 """transpose a 2D matrix, `A`""" |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
11 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
12 if not A: |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
13 # empty matrix |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
14 return A |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
15 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
16 # Asset that all rows have the same length |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
17 try: |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
18 length = unique([len(row) for row in A]) |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
19 except NotUnique as e: |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
20 raise NotAMatrix("Multiple number of columns detected: {}".format(sorted(e.multiples))) |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
21 |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
22 # perform the transpose |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
23 transposed = [[None for i in range(len(A))] |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
24 for j in range(length)] |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
25 for i, row in enumerate(A): |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
26 for j, col in enumerate(row): |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
27 transposed[j][i] = col |
4bf2145c16f8
and quick transposition function
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
28 return transposed |