Python3初心者です。
今、Numpyを用いて行列の計算を行なっています。
コードはエラーなく実行できるのですが、Numpyの配列の使い方で躓いてしまいました。
やりたいことは以下です。
3次正方行列a1を a1 = ((0.3, 0.3, 0.4), (0.1, 0.5, 0.4), (0.2, 0.6, 0.2))
1行3列のベクトルa2を a2 = (0.6, 0.25, 0.15)
とします。(行列を"()"で表現していますが、pythonのタプルではありません)
a1, a2に対して、
tmp = a2・a1 = (0.235, 0.395, 0.37)
という行列の掛け算を行います。
この掛け算の結果をベクトルa2に追加して、2行3列の行列を作りたいです。
上記のアルゴリズムをコードにしたのが以下です。
python
1import numpy as np 2 3a1 = np.array([[0.3, 0.3, 0.4], [0.1, 0.5, 0.4], [0.2, 0.6, 0.2]]) 4a2 = np.array([0.6, 0.25, 0.15]) 5tmp = np.array([0, 0, 0]) # 一時的に用意したもの 6 7for i in range(3): 8 for j in range(3): 9 tmp[i] += a1[j][i] * a2[j] 10print(tmp) # デバッグ用 11# ここにベクトルa2にtmpの結果を追加して、(2,3)行列を作成するコードを書く 12np.insert(a2, -1, tmp, axis=0) 13print(a2)
上記のコードで問題となっているのは、
(1). tmpの要素が変更されないまま0となる。
(2). np.insert を行なっているのに、a2 にベクトルtmpが追加されていない。
です。
どなたかお分かりの方がいらっしゃいましたら、教えていただけますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/20 08:57