还以为是打印前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()