列元素除以最大

Division of column elements by the largest

我想 select 列 m1 中的最大值并除以它的所有行,对 m2, m3, m4, m5 执行相同的过程。 d1、select取最大的 d1 并除以它的所有行的过程相同,d2, d3, d4, d5

的过程相同

举例:

      m1   d1    m2   d2   ...
0    [70, 2.2]  [71, 1.4]  ...   
1    [71, 0.0]  [68, 0.0]  ... 

数据:

#  m1  d1     m2    d2       m3  d3     m4  d4     m5   d5

[[[70, 2.2], [71, 1.41421], [68, 0.0], [69, 2.0], [69, 2.0000]], 
 [[71, 0.0], [68, 0.00000], [69, 2.0], [69, 2.0], [65, 4.8989]]]

脚本:

def conversion(data):

    average = []
    temp = []
    most = []
    for i in range(len(data)):
        temp.append(data[i][0][0])
    most.append(max(temp))
    for i in range(len(data)):
        average.append(data[i][0][0] / most[0])

    return average

结果:

[0.9859154929577465, 1.0]

期望输出:

[[[0.985, 1.000],  [1.000, 1.000], [0.981, 0.000], [1.000, 0.000], [1.000, 0.408]], 
 [[1.000, 0.420],  [0.957, 0.000], [1.000, 1.000], [1.000, 0.000], [0.942, 1.000]]]

这应该有效

a = [[[70, 2.2], [71, 1.41421], [68, 0.0], [69, 2.0], [69, 2.0000]], 
 [[71, 0.0], [68, 0.00000], [69, 2.0], [69, 2.0], [65, 4.8989]]]

def conversion(data):
    max_month = 0
    max_day = 0
    for j in range(len(data[0])):
        for i in range(len(data)):
            if data[i][j][0] > max_month:
                max_month = data[i][j][0]
            if data[i][j][1] > max_day:
                max_day = data[i][j][1]
        for p in range(len(data)):
            if max_month != 0:
                data[p][j][0] = round(data[p][j][0] / max_month, 3)
            if max_day != 0:
                data[p][j][1]  = round(data[p][j][1] / max_day, 3)
        max_month = 0
        max_day = 0
    return data

data = conversion(a)

输出:

 [[[0.986, 1.0], [1.0, 1.0], [0.986, 0.0], [1.0, 1.0], [1.0, 0.408]], [[1.0, 0.0], [0.958, 0.0], [1.0, 1.0], [1.0, 1.0], [0.942, 1.0]]]

我注意到当您遍历数据时,您只会查看 m1 列中的值。由于 len(data) 是两个,因此您只引用最终 for 循环中的 m1 行(即 70 和 71 值)。

如果用这些替换前两个循环,您可以获得最大的 m1 和 d1,然后遍历 (data[i][j]) 的行和列以划分值。

def conversion(data):

    average = []
    temp = []
    most = []
    for i in range(len(data)):
        temp.append(data[i][0])        
    
    most = temp[0]
   
    for i in range(1, len(temp)):
        most = [max(most[0], temp[i][0]), max(most[1], temp[i][1])]
    ...