2017-02-28 18 views
0

なぜインデックスのエラーが発生するのかわかりません。私はPythonにはかなり新しいので、何をすべきか分かりません。私は間違った次元を初期化していると思うが、それを壊すことはできない。インデックス1は、サイズ0の軸0に対して範囲外です。

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[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[i] = (x[i] - mean)/std_dev 

print("Mean :", mean) 
print("Standard_dev :",std_dev) 
print("Variance : ",var) 
+0

なぜxupはshape(1,120)の2次元配列にしたのですか?それを一次元にしてみてください: 'xup = np.zeros(shape = 120)' –

答えて

0

xupは2次元です。ここで再び、その後

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変更して上に掲載ファイルをので、代わりにxup[i]のあなたはxup[0][i]

はただ、これらの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) 
+0

'xup'は2次元の配列なので、' xup [0] [i] 'の代わりに' xup [ 0、i] 'となる。 –

0

実際にエラーが発生した場所を教えてください。しかし、私は推測することができます。

xup = np.zeros(shape=(1,120)) 
for i in range(len_x) : 
    xup[i,:] = (x[i] - mean) ** 2 #<===== 

(同様のzループは以下の)

を私は暗黙の,:を追加しました。 xup[i]が最初のディメンションにインデックスを作成しています。しかし、それはサイズ1だけです。作成されると、それは大きな2番目の次元です。 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)を既に使用しています。 -**のような演算子もそうです。

(以前の私はnp.zeros_like(x)を使用して提案のだが、それはxのような整数配列を作成していることに気づきました。それに計算からfloat値を割り当てると、問題を与えるだろう。アサインを行う場合、あなたは注意を払う必要があるループを埋めます

関連する問題