文字列を行列に含んでいるとNumpyでは面倒なので調べた。
data =
[['O', 'A', 'B', 'C', 'D', 'E', 'F'],
['P', 'A11', 'A12', 'A13', 'A14', 'A15', 'A16'],
['Q', 'A21', 'A22', 'A23', 'A24', 'A25', 'A26'],
['R', 'A31', 'A32', 'A33', 'A34', 'A35', 'A36']]
のとき、
data2 = list(map(list, zip(*data)))
とするとできた。
data2 =
[['O', 'P', 'Q', 'R'],
['A', 'A11', 'A21', 'A31'],
['B', 'A12', 'A22', 'A32'],
['C', 'A13', 'A23', 'A33'],
['D', 'A14', 'A24', 'A34'],
['E', 'A15', 'A25', 'A35'],
['F', 'A16', 'A26', 'A36']]
参照:
http://asiagohan.hatenablog.com/entry/2015/05/08/170715
こちらのやり方もできた。
http://lightson.dip.jp/blog/seko/2830
def invert_lst(lst):
col = len(lst[0])
row = len(lst)
inv = []
for i in range(col):
l = []
for j in range(row):
l.append('')
inv.append(l)
for i in range(row):
for j in range(col):
inv[j][i] = lst[i][j]
return inv
lst = [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
print invert_lst(lst)
>>>[[1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]]