@hase0501

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Dive into codeの問題について

Dive into Codeで模擬試験を解いているのですが1問だけなぜこの答えになるのかわかりません。
解説を見ても理解できなかったのでどなたか下記の答えになる理由を教えて頂けると幸いです。

以下のコードを実行した場合の出力として、正しいものを選べ。
import numpy as np

A = np.array([[1, 1],[1, 1]])
B = np.array([1, 1])
np.dot(A, B)

答え:array([2, 2])

0 likes

5Answer

np.dotは渡す引数によって内積あるいは行列の積を返します.これらが何かは説明しなくていいですよね…?

一応手計算できる方もどうぞ.

0Like

Comments

  1. Qiitaタグの先頭にタグ記号等は不要です.

A

[[1 1]
 [1 1]]

で Bは

[1 1]

です。
np.dotでは下記のような計算をしているので

[A[0,0]*B[0] + A[0,1]*B[1], A[1,0]*B[0] + A[1,1]*B[1]]

答えは[2, 2]になります。

numpy.dotの計算詳細についてはドキュメントをご覧ください。

0Like

Comments

  1. 質問に「解説を見ても理解できなかったのでどなたか下記の答えになる理由を教えて頂けると幸いです。」とありますが、どのような解説だったのでしょうか?そしてその解説のどの部分が理解できなかったのでしょうか?
    回答がいくつか付いていますがクローズされないのは、上記について未記載のため回答が質問者さんの望むものになっていない可能性があります。

This answer has been deleted for violation of our Terms of Service.

皆さま、回答ありがとうございます。
解説は以下の通りです。
Aは2行2列、Bは2行の行列です。これらの内積を取ると[2, 2]が残る行列となります。内積はAの列数とBの行数が合わないと行列計算は出来ません。つまり内側の数値を合わせないと計算が出来ません。内側の数値をあわせるというのはA@Bを行列数で書き換えると、2:2@2,0 というイメージになります。@の両隣の2が合っていないと内積計算は出来ません。ここが合うと初めて内積計算が可能となります。内積計算の結果はAの行数とBの列数の行列になります。つまり、[2, 0]というイメージになります。内積を計算し、解答は array([2, 2])となります。

↑「Bは2行の行列です。」についての部分ですが2行ではなくて2列ではないのですか?

0Like

Comments

  1. Bは2行の行列です

    縦ベクトル(列ベクトル)を意味しているのでしょう。数学ではベクトルは基本縦ベクトル(列ベクトル)だと思います。プログラミング言語に依っては行ベクトルと列ベクトルが区別されています。ベクトルについては高校数学の教科書に載っているかな?計算自体については数学ですね。

    ただnp.array([1, 1])の次元は1なので解説の説明で行列と言っているのは分かりにくいかもしれません。

  2. @hase0501

    Questioner

    ありがとうございます。

皆さま、回答ありがとうございました。
理解出来ました。
この質問はクローズさせていただきます。

0Like

Your answer might help someone💌