Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- def parse_matrix(filename):
- f = open(filename)
- matrix = []
- for line in f:
- if not line.startswith('#'):
- matrix.append([])
- line = line.replace('\n', '')
- line = re.split('\s+', line)
- line.pop(0)
- for i in range(len(line)):
- matrix[-1].append(int(line[i]))
- for i in range(1, len(matrix)):
- for j in range(i):
- matrix[i].insert(j, 1 / matrix[j][i])
- return matrix
- def geometric_mean(vector):
- result = 1
- for i in vector:
- result *= i
- result **= (1/len(vector))
- return result
- class Table:
- def __init__(self):
- self.matrix = []
- self.K = []
- self.V = []
- self.W = []
- self.S = []
- self.SumV = 0
- def parse_table(self, filename):
- self.matrix = parse_matrix(filename)
- def calculate_V(self):
- self.V = []
- for i in range(len(self.matrix)):
- self.V.append(geometric_mean(self.matrix[i]))
- def calculate_sum_V(self):
- self.SumV = 0
- for i in self.V:
- self.SumV += i
- def calculate_W(self):
- pass
- def calculate_S(self):
- self.S = []
- for i in range(len(self.matrix)):
- self.S.append(0)
- for j in range(len(self.matrix)):
- self.S[-1] += self.matrix[j][i]
- def normal_V(self):
- self.W = []
- for i in range(len(self.matrix)):
- self.W.append(self.V[i] / self.SumV)
- def print_table(self):
- pass
- #
- # e = parse_matrix('input.txt')
- # for i in e:
- # for j in i:
- # print('"{}"'.format(j), end=' ')
- # print()
- #
- #
- #
- # for line in e:
- # for i in line:
- # print('%.2f' % i, end=' ')
- # print()
- #
- #
- t = Table()
- t.parse_table('input.txt')
- for line in t.matrix:
- for i in line:
- print('%.2f' % i, end=' ')
- print()
- t.calculate_V()
- t.calculate_sum_V()
- t.normal_V()
- t.calculate_S()
- for i in t.S:
- print(i)
- #
- # for i in t.V:
- # print(i)
- #
- # print()
- # print(t.SumV)
- # print()
- #
- # for i in t.W:
- # print(i)
- #
Advertisement
Add Comment
Please, Sign In to add comment