Python中带有条件的列表的平均值 list=[[159.2213、222.2223、101.2122] [359.2222, 22.2210, 301.2144]] 如果列表[1][0]
你好!!我想对每一列执行此操作,并将结果输出到另一个列表中。Fix 您可以循环迭代存在的列数Python中带有条件的列表的平均值 list=[[159.2213、222.2223、101.2122] [359.2222, 22.2210, 301.2144]] 如果列表[1][0],python,if-statement,mean,Python,If Statement,Mean,你好!!我想对每一列执行此操作,并将结果输出到另一个列表中。Fix 您可以循环迭代存在的列数 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
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
与numpy搭配最佳 简单的语法和最佳的性能
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导入为np
values=np.array(值)
res=值。总和(轴=0)/2
res+=np.其中(值[1]<值[0],-100100)
lis=[[159.2213、222.2223、101.2122],
[359.2222, 22.2210, 301.2144]]
res=[]
对于范围内的i(len(lis[0]):
如果lis[1][i]
这应该是可行的,但是使用numpy将是解决此类问题的更好方法。您可以这样做:
lis = [[159.2213, 222.2223, 101.2122],
[359.2222, 22.2210, 301.2144]]
res = []
for i in range(len(lis[0])):
if lis[1][i] < lis[0][i]:
res.append((lis[1][i] + lis[0][i] - 200)/2)
else:
res.append((lis[1][i] + lis[0][i] + 200)/2)
list = [[159.2213, 222.2223, 101.2122]
[359.2222, 22.2210, 301.2144]]
results = []
for x,y in zip(list[0],list[1]):
if y < x:
avg = (y + x - 200)/2
else:
avg = (y + x + 200)/2
results.append(avg)
list=[[159.2213、222.2223、101.2122]
[359.2222, 22.2210, 301.2144]]
结果=[]
对于zip中的x,y(列表[0],列表[1]):
如果y
列表理解如下所示:
lis = [[159.2213, 222.2223, 101.2122],
[359.2222, 22.2210, 301.2144]]
res = []
for i in range(len(lis[0])):
if lis[1][i] < lis[0][i]:
res.append((lis[1][i] + lis[0][i] - 200)/2)
else:
res.append((lis[1][i] + lis[0][i] + 200)/2)
list = [[159.2213, 222.2223, 101.2122]
[359.2222, 22.2210, 301.2144]]
results = []
for x,y in zip(list[0],list[1]):
if y < x:
avg = (y + x - 200)/2
else:
avg = (y + x + 200)/2
results.append(avg)
我猜第一行末尾缺少一个。请查看
numpy
,因为“列”操作比使用列表更容易。
avg = [(x + y + (200 if x <= y else -200)) / 2 for x, y in zip(*lst)]
arr = np.array(lst)
avg = 0.5 * (arr.sum(axis=0) + np.copysign(200, np.diff(arr, axis=0)))