Python 列表元素的代数运算

Python 列表元素的代数运算,python,list,statistics,standard-deviation,variance,Python,List,Statistics,Standard Deviation,Variance,为了便于学习,我尝试使用python对数据进行统计处理 在我的问题中,我生成两次掷骰子n次,其中X是一个随机变量,定义了两次掷骰子的乘积。我设法计算了X的期望值,然后是X的方差,但是我在计算X的标准偏差时遇到了问题 这是我的问题。 如何从两个列表中获得第三个列表,基于对具有相同序列号的这两个列表元素的代数运算?确切地说,我想得到这样的东西 x= [x0,x1,..,席,…,xn] < /Calp> y=[y0,y1,…,yi,…,yn] z=[(x0-y0)^2,(x1-y1)^2,…(xi

为了便于学习,我尝试使用python对数据进行统计处理

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

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

<代码> x= [x0,x1,..,席,…,xn] < /Calp>

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)

看起来您只需要在这里获取x_存储的第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中,标识是至关重要的

那么它应该会起作用


看起来您正在使用python 2.7?我建议你们不要把你们称之为
print
的样式和括号混在一起。使用
print(…)

看起来您只需要在这里获取x_存储的第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中,标识是至关重要的

那么它应该会起作用


看起来您正在使用python 2.7?我建议你们不要把你们称之为
print
的样式和括号混在一起。使用
print(…)

您已经有了两个列表
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=[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
ang
y
现在你想从
x
y
计算
z
对吗?你有
x
ang
y
现在你想从
x
y
计算
z
对吗?