如何用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")
[[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 | 生物信息學 |