python - 来自具有 Python 条件的列表的平均值

标签 python if-statement mean

list = [[159.2213, 222.2223, 101.2122]
        [359.2222, 22.2210, 301.2144]]

if list[1][0] < list[0][0]:
    avg = (list[1][0] + list[0][0] - 200)/2
else:
    avg = (list[1][0] + list[0][0] + 200)/2

您好!我想对每一列执行此操作并将结果输出到另一个列表中。

最佳答案

修复

您可以循环迭代存在的列数

values = [[159.2213, 222.2223, 101.2122], [359.2222, 22.2210, 301.2144]]
avgs = []
for idx_col in range(len(values[0])):
    if values[1][idx_col] < values[0][idx_col]:
        avg = (values[1][idx_col] + values[0][idx_col] - 200) / 2
    else:
        avg = (values[1][idx_col] + values[0][idx_col] + 200) / 2
    avgs.append(avg)

简化

您可以使用zip 一次迭代两行,并简化if/else 条件

avgs = []
for first_row, second_row in zip(*values):
    factor = -1 if second_row < first_row else 1
    avgs.append((first_row + second_row + (200 * factor)) / 2)

最好用 numpy

简单语法和最佳性能

import numpy as np

values = np.array(values)
res = values.sum(axis=0) / 2
res += np.where(values[1] < values[0], -100, 100)

关于python - 来自具有 Python 条件的列表的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66834403/

相关文章:

python - 如何从串行 python 脚本中使用 mpi4py 应用程序

python - 为文件或类似文件的对象键入提示?

python - 计算 df 的平均值,但如果 =>1 个值与该平均值相差 >20%,则平均值设置为 NaN

python - 在不违反类封装的情况下在两个窗口之间进行通信

r - R 中的简单 if-else 循环

c - 如果 (n!=0) n=0; v/s n=0;哪个更有效,为什么?

c - 如何根据条件对 void 指针进行类型转换?

python - 如何在python中计算均值?

r - 计算每个主题的平均值并重复每个主题行的值

python - 使用 Django 保存用户生成的密码