列元素除以最大
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])]
...
我想 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])]
...