索引1超出轴0的大小为1的范围

时间:2017-02-28 21:02:19

标签: python numpy statistics

我不知道为什么我会收到索引错误。我对python很新,因此无法弄清楚要做什么。我认为我正在初始化一些错误的维度,但我无法打破它。

UITextFieldDelegate

2 个答案:

答案 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。从计算中分配浮点值会产生问题。填充循环你需要注意目标数组的形状和类型。)