【问题标题】:Multiplying two lists in a sum将两个列表相乘
【发布时间】:2020-03-01 06:17:35
【问题描述】:

我有一个需要使用的公式(附图片)。我有两个列表,x 和 y。我的问题是我需要在 M 的公式中将这两个列表相乘。但似乎我无法在 python 中将列表相乘。如何使用两个列表为 M 编码?这是我当前的代码

m = (1/D)sum((([(xi-xbar) for xi in x]))*([(yi*1) for yi in y]))
print('m',m)

我收到错误“无法将序列乘以'list'类型的非整数”

如何将两个列表相乘,谢谢!

【问题讨论】:

  • 不要附加图片。请提供样本数据和您的预期结果。 How to Ask
  • 不确定我是否完全理解这些要求。但是试试m = 1/D * sum((x[i] - xbar) * y[i] for i in range(len(x)))

标签: python python-3.x list sum multiplication


【解决方案1】:

你想这样做。

m=sum((x<sub>i</sub>-mean(x))*y<sub>i</sub>)

你可以试试这个。

from statistics import mean
x=[1,2,3,4,5]
y=[6,7,8,9,10]

mean_x=mean(x)

m=(1/D)*sum((i-mean_x)*j for i,j in zip(x,y))
c=mean(y)-(m*mean_x)

【讨论】:

  • 感谢您的评论,它成功了!我正在尝试将您在这里向我展示的内容用于另一个公式。公式为d=yi-mxi-c。所以我有d = j-(m*i)-c for i,j in zip(x,y)) print('d',d)但我的语法无效。知道为什么吗?
  • 弄清楚它们的语法,只是括号。但现在我有一个新问题。所以我有d = (j-(m*i)-c for i,j in zip(x,y)) print('d',d) 但我得到了 d at 0x0000027C60346A50> 作为答案。知道为什么吗?
  • d 是这里的生成器。使用list(d) 使用它。注意:d 如果是生成器,则只能迭代一次。改用这个d = [j-(m*i)-c for i,j in zip(x,y)] 将使d 成为一个列表。如果这有帮助,请接受这个作为答案并投票。
  • 只是最后一个后续问题,我现在如何在另一个公式中使用 d。既然 i 和 j 用于 x 和 y,那我为 d 输入什么?
  • 可能应该提到我使用的公式,delta m^2=((1/D)*((su​​m d^2)/n-2))。对于代码,我有(deltam)**2=((1/D)*(Sum d /(len(x)-2)))。不知道如何处理列表 d。
【解决方案2】:

你可以使用 python 中的 zip 函数来做对 2 个列表。

list_a=[1,2,3]
list_b=[4,5,6]
multiplied_ab=[]
for i,j in zip(list_a,list_b):
    multiplied_ab.append(i,j)
print(multiplied_ab)

您的结果将是 2 个列表的乘积,如下所示: [4,10,18]

您必须确保 2 个列表的长度匹配。

然后您可以使用sum()函数简单地计算列表的总和

【讨论】:

  • 似乎我的代码没有通过,m = (1/D)sum((([(xi-xbar) for xi in x]))*([(yi*1) for yi in y])) print('m',m) 我不仅需要将列表相乘,还需要将公式中的其他操作相乘。我需要 m=1/D sum(list_x - xbar)*list_y。我有 D 和 xbar 的值。那么如何从 list_x 中减去 xbar,然后在求和的同时将其乘以 list_y 呢?
猜你喜欢
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多