如何用python實現行列互換?

本人生物信息小白,最近想整理一批數據,需要excel裡面有兩萬多列,由於excel實現不了,所以打算用軟體或語言來解決,希望大神給與指導,在此感激不盡


基本的python吧:

In [1]: a=[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

In [2]: print map(list,zip(*a))
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]


用excel的話建議用pandas

import pandas as pd
df = pd.read_excel("你的文件路徑","第幾個sheet", header = False) #讀取文件 比如 df = pd.read_excel("C:/your_data.xlsx",0, header = False)
df_T = df.T #獲得矩陣的轉置
df_T.to_excel("要保存的文件路徑", sheet_name="我的表名") #保存文件 比如 df_T.to_excel("C:/test.xlsx", sheet_name="sheet 1")

保存的文件之前的title都還在,WinPython直接解壓就可以使用,裡面要使用的包都有


[[row[i] for row in matrix] for i in range(len(matrix[0]))]


sample input:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

program:

with open("in.txt") as f:
lis = [x.split() for x in f]

for x in zip(*lis):
for y in x:
print(y+" ", end="")
print("
")

output:

1 6 11

2 7 12

3 8 13

4 9 14

5 10 15

References: http://stackoverflow.com/questions/10507104/row-to-column-transposition-in-python


如果是數值數據,可以直接使用numpy庫的函數

numpy.transpose()


編程小白一枚,使用python 3.6

# 笨辦法
b=[]
for i in range(len(a[0])):
row=[]
for j in range(len(a)):
row.append(a[j][i])
b.append(row)
print(b)

# 以上寫成一句
print([[row[i] for row in a] for i in range(len(a[0]))])

# 用函數zip更直觀
list(list(i) for i in zip(*a))


2W多列的話只能存成CSV格式了。

xlsx也就16384列


我想問一下如果我是4維數據,我想將第一維的數據和第二維的數據互換,應該要怎麼做?


推薦閱讀:

Perl、PHP、Python、Ruby對於入門的Linux運維來說,哪個更易學?
Ruby、Perl、Python、Lua等語言相互之間都有哪些異同點?

TAG:Python | MicrosoftExcel | Perl | 生物信息學 |