from PIL import Image, ImageDraw
def readfile(filename):
with open(filename, 'r') as file:
lines = [line for line in file]
# 第一列作为标题
colnames = lines[0].strip().split('\t')[1:]
rownames = []
data = []
for line in lines[1:]:
p = line.strip().split('\t')
# 每行第一列作为行名
rownames.append(p[0])
# 每行统计的数量
data.append([float(x) for x in p[1:]])
return rownames, colnames, data
from math import sqrt
def pearson(v1, v2):
# 求和
sum1 = sum(v1)
sum2 = sum(v2)
# 求平方和
sum1Sq = sum([pow(v, 2) for v in v1])
sum2Sq = sum([pow(v, 2) for v in v2])
# 求乘积和
pSum = sum([v1[i] * v2[i] for i in range(len(v1))])
# 1-皮尔逊相关度,两个元素越相似,距离越短
num = pSum - (sum1 * sum2 / len(v1))
den = sqrt((sum1Sq - pow(sum1, 2) / len(v1)) * (sum2Sq - pow