質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

267閲覧

pythonで次のコードを簡単にしたい。

physics303

総合スコア89

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/25 02:50

次のような計算をしています。
Xというのは1次元配列で、
X = np.array([1,2,4,3,1,3,2,4,6,4,2,…])
のような感じです。

python

1 2dim = 4 3input_vec = np.zeros((len(X),dim+1)) 4 5Sum1 = np.zeros((dim+1,dim+1)) 6Sum2 = np.c_[np.zeros(dim+1)] #縦ベクトルにしておく 7 8 for j in range(0,len(X)): 9 input_vec[j] = np.array([[X[j]**0,X[j]**1,X[j]**2,X[j]**3,X[j]**4]]) 10 11 Sum1 = Sum1 + np.dot(input_vec[[j]].transpose(),input_vec[[j]]) 12 Sum2 = Sum2 + Y[j]*input_vec[[j]].transpose()

dim = 4 の場合はこのままでも良いのですが、dimを書き換えた時にちゃんと動くように、

python

1 2input_vec = np.zeros((len(X),dim+1)) 3 4Sum1 = np.zeros((dim+1,dim+1)) 5Sum2 = np.c_[np.zeros(dim+1)] #縦ベクトルにしておく 6 7 for j in range(0,len(X)): 8 for i in range(0,dim+1): 9 input_vec[j][i] = X[j]**i 10 11 Sum1 = Sum1 + np.dot(input_vec[[j]].transpose(),input_vec[[j]]) 12 Sum2 = Sum2 + Y[j]*input_vec[[j]].transpose()

と書き換えましたが、エラーがでます。なぜでしょう。

エラー内容:
IndexError: index 1 is out of bounds for axis 0 with size 1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/10/25 02:52

どこでどういうエラーが出るんでしょうか。エラーメッセージを提示してください
guest

回答1

0

ベストアンサー

for j in ... がインデントされているのが問題ではないかと。

投稿2018/10/25 06:38

hiro-k

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問