还以为是打印前K个, 结果没用上...
import numpy as np
class Pireson:
def __init__(self, N, M, K, data):
self.N = N
self.M = M
self.K = K
self.data = data
r = self.pireson()
self.r_index = self.slct(r)
return
def pireson(self):
r_coe = np.zeros(self.M)
Y = self.data[:, self.M]
Y_bar = np.mean(Y)
Y_std = np.std(Y)
for mm in range(self.M):
X = self.data[:, mm]
X_bar = np.mean(X)
X_std = np.std(X)
r_up = np.sum((X - X_bar) * (Y - Y_bar))
r_down = self.N * Y_std * X_std
if r_down == 0.0:
r_coe[mm] = 0.0
else:
r_coe[mm] = r_up / r_down
return r_coe
def slct(self, r):
r_index = []
for mm in range(self.M):
r_index.append((-r[mm], mm))
r_index.sort()
return r_index
def prnt(self):
for kk in range(self.M):
print('%d %.4f' % (self.r_index[kk][1], -self.r_index[kk][0]))
if __name__ == '__main__':
N_read, M_read = map(int, input().split())
data_read = []
for _ in range(N_read):
data_read.append(list(map(float, input().split())))
data_read = np.array(data_read)
K_read = int(input())
pireson = Pireson(N_read, M_read, K_read, data_read)
pireson.prnt()

京公网安备 11010502036488号