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

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

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

2回答

458閲覧

列ベクトルと行ベクトルの内積を取る方法を教えてください

kanka

総合スコア26

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/01/02 10:24

二つの行ベクトルa,bから、aを列ベクトルにしたものとbを行ベクトルにしたものの内積を取りたいです。

c = a(T)b
を行いたいです。

そのため以下の処理を行ったのですがエラーが出ました。

Python

1import numpy as np 2 3a = np.asarray([1,2,3]) 4b = np.asarray([1,2,3,4]) 5 6print(np.dot(a.T,b.T)) 7

error

1Traceback (most recent call last): 2 File "/Users/name/Documents/python_code/test.py", line 6, in <module> 3 print(np.dot(a.T,b.T)) 4ValueError: shapes (3,) and (4,) not aligned: 3 (dim 0) != 4 (dim 0) 5>>>

解決策を教えていただければ嬉しいです。
よろしくお願いします

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

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

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

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

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

LouiS0616

2019/01/02 10:44

具体的にどのような結果になることを期待していますか?要素長が異なるベクトルの内積は取れないと思うのですけれど、外積と取り違えたりしていませんか。
kanka

2019/01/02 10:47

a=[1,2,3] b=[1,2,3,4] があったとします。 a(T)b= [[1] [2] ・ [1,2,3,4] [3]] = [ 1 2 3 4 2 4 6 8 3 6 9 12] のようなものを考えています
guest

回答2

0

ベストアンサー

Python

1import numpy as np 2 3a = np.asarray([1,2,3]) 4b = np.asarray([1,2,3,4]) 5 6print(np.outer(a, b))

実行結果 paizaIO

[[ 1 2 3 4] [ 2 4 6 8] [ 3 6 9 12]]

あるいは

Python

1import numpy as np 2 3a = np.asarray([[1,2,3]]) # 最初から ndim = 2 の行列としておく 4b = np.asarray([[1,2,3,4]]) 5 6print(np.dot(a.T, b))

実行結果 paizaIO

[[ 1 2 3 4] [ 2 4 6 8] [ 3 6 9 12]]

投稿2019/01/02 10:53

編集2019/01/02 10:58
LouiS0616

総合スコア35658

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

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

kanka

2019/01/02 10:56

ありがとうございます。 誠にお恥ずかしいのですが、ここでいう外積はクロス積とは違うのでしょうか?
kanka

2019/01/02 11:07

すみません、検索したら出てきました。 すでにお手を煩わせてしまっていたらすみません。 転置で行と列を入れ替えるには最初から次元を2にしておく必要があるのですね。 ありがとうございます
guest

0

解決済みですが数言

**「行ベクトルと列ベクトルを行列とみなし、これの積を計算することは内積計算と全く同義である。」**という説明をよく見かけますが、厳密には違います。なぜならば、内積の計算結果は実数や複素数等の行列要素であり、行列計算の結果は行列だからです。

「1行1列で構成される実数行列==実数」とは必ずしも言えません。

この違いはプログラミングの世界においては顕著に現れます。「1行1列で構成される実数行列」を強引に実数として解釈させ、期待通りの値にならずにバグるということを何度も見てきました。もちろん、言語仕様によるところなので、Pythonはこの問題がないかもしれませんが、よくあるバグのパターンなので参考までに。

投稿2019/01/02 14:53

HogeAnimalLover

総合スコア4830

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問