我不知道为什么我会收到索引错误。我对python很新,因此无法弄清楚要做什么。我认为我正在初始化一些错误的维度,但我无法打破它。
UITextFieldDelegate
答案 0 :(得分:0)
xup
是二维的。因此,您需要xup[i]
xup[0][i]
修复这两个地方:
xup = np.zeros(shape=(1,120))
for i in range(len_x) :
xup[0, i] = (x[i] - mean) ** 2
然后再来一次:
z = np.zeros(shape = (1,120))
for i in range(len_x) :
z[0, i] = (x[i] - mean)/std_dev
这是您在上面发布的2个更改的文件:
import numpy as np
import matplotlib as plt
x = np.array([45, 68, 41, 87, 61, 44, 67, 30, 54, 8, 39, 60, 37, 50, 19, 86, 42, 29, 32, 61, 25, 77, 62, 98, 47, 36, 15, 40, 9, 25, 34, 50, 61, 75, 51, 96, 20, 13, 18, 35, 43, 88, 25, 95, 68, 81, 29, 41, 45, 87,45, 68, 41, 87, 61, 44, 67, 30, 54, 8, 39, 60, 37, 50, 19, 86, 42, 29, 32, 61, 25, 77, 62, 98, 47, 36, 15, 40, 9, 25, 34, 50, 61, 75, 51, 96, 20, 13, 18, 35, 43, 88, 25, 95, 68, 81, 29, 41, 45, 87])
len_x = len(x)
mean = np.mean(x)
xup = np.zeros(shape=(1,120))
for i in range(len_x) :
xup[0, i] = (x[i] - mean) ** 2
xup_sum = np.sum(xup)
var = xup_sum / len_x
std_dev = var ** 0.5
z = np.zeros(shape = (1,120))
for i in range(len_x) :
z[0, i] = (x[i] - mean)/std_dev
print("Mean :", mean)
print("Standard_dev :",std_dev)
print("Variance : ",var)
答案 1 :(得分:0)
你真的应该告诉我们错误发生在哪里。但我可以猜到:
xup = np.zeros(shape=(1,120))
for i in range(len_x) :
xup[i,:] = (x[i] - mean) ** 2 #<=====
(类似z
循环)
我添加了隐含的,:
。您的xup[i]
正在为第一维编制索引。但这只是大小1.创建时它是第二个维度。 xup[0,i]
是正确的索引。
为什么xup
2d具有(1,120)形状?为什么形状不同x
(我假设是(120,))? xup = np.zeros(len_x)
。
更好的是使用正确的numpy
数组计算:
xup = (x-mean)**2
但是xup
的形状(100,)与x
相同。
您已经在使用np.mean(x)
,它在整个x
上运行。 -
和**
等运营商也这样做。
(之前我曾建议使用np.zeros_like(x)
,但后来意识到它会创建一个整数数组,如x
。从计算中分配浮点值会产生问题。填充循环你需要注意目标数组的形状和类型。)