Python 列表元素的代数运算
为了便于学习,我尝试使用python对数据进行统计处理 在我的问题中,我生成两次掷骰子n次,其中X是一个随机变量,定义了两次掷骰子的乘积。我设法计算了X的期望值,然后是X的方差,但是我在计算X的标准偏差时遇到了问题 这是我的问题。 如何从两个列表中获得第三个列表,基于对具有相同序列号的这两个列表元素的代数运算?确切地说,我想得到这样的东西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
<代码> 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
angy
现在你想从x
和y
计算z
对吗?你有x
angy
现在你想从x
和y
计算z
对吗?