列表元素的代数运算

2024-04-26 06:38:41 发布

您现在位置:Python中文网/ 问答频道 /正文

为了学习,我尝试使用python对数据进行统计处理。你知道吗

在我的问题中,我生成两次掷骰子n次,其中X是一个随机变量,定义了两次掷骰子的乘积。我设法计算了X的期望值,然后是X的方差,但是我在计算X的标准差时遇到了问题

这是我的问题。 如何从两个列表中得到第三个列表,基于对具有相同序列号的这两个列表的元素的代数运算?准确地说,我想得到这样的东西。你知道吗

x = [x0, x1, .., xi, .., xn]

y = [y0, y1, .., yi, .., yn]

z = [(x0-y0)^2, (x1-y1)^2, .., (xi-yi)^2, .., (xn-yn)^2]

这是我的密码。可能有点笨重,但这是我的第一个。我收到一个错误

unsupported operand type(s) for -: 'list' and 'Decimal

在线上

x_error_2 = Decimal (((x_storage) - (expectation_x))**2).quantize(Decimal('.0001'))

显然,我做错了。你知道吗

    n = input ("n=")
    sum_x = 0
    sum_x_2 = 0
    sum_x_error_2 = 0
    x_storage = [ ]
    expectation_x_storage = []
    from decimal import Decimal
    for i in range (0, n):
        from random import *
        x = Decimal ((randint(1, 6)*randint(1, 6))).quantize(Decimal('1'))
        x_storage.append(x)
        x_2 = Decimal (x**2).quantize(Decimal('.01'))     
        sum_x = sum_x + x
        sum_x_2 = sum_x_2 + x_2
    expectation_x = Decimal (sum_x / n).quantize(Decimal('.01'))
    expectation_x_2 = Decimal (sum_x_2 / n).quantize(Decimal('.01'))
    variance_x = Decimal ((expectation_x_2 - (expectation_x)**2)).quantize(Decimal('.01'))
    print ("E(X)=")
    print (expectation_x)
    print ("V(X)=")
    print (variance_x)
    for i in range (0, n):
        expectation_x_storage.append(expectation_x)
    print x_storage
    print expectation_x_storage
    #code is working until the next line
    for i in range (0, n):
        x_error_2 = Decimal (((x_storage) - (expectation_x))**2).quantize(Decimal('.0001'))
        sum_x_error_2 = sum_x_error_2 + x_error_2
        standard_deviation_x_2 = Decimal ((sum_x_error_2)/(n-1)).quantize(Decimal('.01'))
    print ("Sn2(X)=")
    print (standard_deviation_x_2)

Tags: in列表forrangestorageerrordecimalsum
2条回答

您已经有了两个列表x = [x1,x2,...xn]y=[y1,y2,...,yn]现在z应该是z=[(x1-y1)^2,(x2-y2)^2,...,(xn-yn)^2]

你可以这样做:

>>> a=[35.5,36.6,37.7]
>>> b=[12.34,13.89,30.8]
>>> c=[(a[i]-b[i])**2 for i in range(len(a))]
>>> c
[536.3856, 515.7441, 47.61000000000003]
>>> 

如果要舍入这些数字,可以使用round函数

>>> c=[round((a[i]-b[i])**2,3) for i in range(len(a))]
>>> c
[536.386, 515.744, 47.61]
>>> 

round(x,y)是x到y十进制数字的整数

看起来您只需要在这里获取xÈu存储的第i个元素。你知道吗

x_error_2 = Decimal (((x_storage[i]) - (expectation_x))**2).quantize(Decimal('.0001'))

同时更改行的标识

standard_deviation_x_2 = Decimal ((sum_x_error_2)/(n-1)).quantize(Decimal('.01'))

把它放在外面循环。不确定是否值得一提,但在python中,识别是关键的。你知道吗

那就行了。你知道吗

你好像在用Python2.7?我建议你不要把你称之为print的样式和括号混在一起。使用print(...)。你知道吗

相关问题 更多 >