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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1954閲覧

行列の次元数,pythonでの次元の求め方(ndim)

kohekoh

総合スコア140

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/18 04:40

例えば3×3の行列を考えます

このとき次元数の考え方として,3×3なので3次元という風に言ったりすると思うのですが

ndimを用いると2次元になります

次元の考え方のずれがあると思うのですが
これを説明していただけるとありがたいです

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

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

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

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

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

LouiS0616

2018/11/18 05:01 編集

例えば (640 x 480 x 3) のRGB画像行列があったら、一体何次元だとお考えなのでしょうか。
kohekoh

2018/11/18 06:14

3次元だと思います.
LouiS0616

2018/11/18 06:19

ですよね。ならば (3 x 3) は二次元ということで納得いきませんか?
guest

回答1

0

ベストアンサー

3×3なので3次元というのがそもそもよくわかりませんが・・・

ndimは配列をlist風に表記したときなどのネストの深さです。もっと単純に言えば、3×3の数字の数です(3×3なら2、3×3×3×3なら4)。

3×3という配列の形の情報は別途shapeで取れますね。

参考:
NumPyの軸(axis)と次元数(ndim)とは何を意味するのか - DeepAge

投稿2018/11/18 04:44

編集2018/11/18 04:46
hayataka2049

総合スコア30933

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

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

kohekoh

2018/11/18 06:14

多変量正規分布の確率密度関数を考えている途中で次元がわからなくなったのですが 3次元の正規分布を考えるときにxはどのような形で,平均,分散がどのようになるのかを 教えていただけるとありがたいです 例えば,以下の資料から考えるとxが3つある場合(x = {x1,x2,x3}), 平均が3つで,分散が3×3になると考えているのですがどうなのでしょうか https://mathtrain.jp/tahenryogauss
hayataka2049

2018/11/18 06:21

3次元の多変量正規分布自体は平均がxyz(と呼ぶことにします、別にx1,x2,x3でも構いません)ごとに3つ、分散はxx,xy,xz,yx,...の共分散ですから、3*3の分散共分散行列で表現されると思います。 多変量正規分布に従って分布するデータ自体は、numpyのデータ構造では [[x1, y1, z1], [x2, y2, z2], ..., [xn, yn, zn] と表され、shape=(n,3), ndim=2の配列になります。 また、分散共分散行列は [[Cov(x,x), Cov(x, y), Cov(x, z)], [Cov(y,x), ...], ...] というshape=(3,3)、ndim=2の配列として表現されます。
hayataka2049

2018/11/18 06:23

3×3が分散共分散行列であることがわかっていれば、3つの確率変数の分散共分散行列なのは明白なので「3次元」という風に言ったりする、という趣旨だと思いますが、それとndimに直接の関係はありません。分散共分散行列は正方行列なのでshapeを見れば「3次元」ということはわかります。
kohekoh

2018/11/18 06:37

以下のサイトの ベクトル、行列を用いた平均と分散の表記 というところに 三次元の例として,3×3の共分散行列が記述してありますが これは,3次元ではなく,2次元で,3変数と考える ということでしょうか https://www.hellocybernetics.tech/entry/2016/10/06/111153
hayataka2049

2018/11/18 06:43

「3個の確率変数がある場合の3×3の共分散行列」を「2次元のnumpy配列で表現している」のです。 数学的な「次元」とプログラミング上の「次元」はまったく別の概念と考えた方が良いでしょう(numpyのndimは後者です)。
hayataka2049

2018/11/18 06:44

2次元になる理由は単純で、行と列を2次元で表現しているのです。
kohekoh

2018/11/18 06:57

なるほど. ということは3次元といわれたら 数学的には3×3を想定するということでいいんですかね プログラミング的には2次元だけど っていう感じですか
hayataka2049

2018/11/18 07:11 編集

分散共分散行列だから3次元=3*3なだけで、必ずしも3次元と言われたら3*3という訳でもありません。 「3次元の特徴量」ならサンプル数*3かもしれないし、あるいは単に3次元ベクトルかもしれない訳で。 サンプル数*3はプログラミング的には2次元配列だし、3次元ベクトルは普通は1次元配列かな。データ構造としての表現方法は色々あります(配列である必要性すら実はありません。pythonのdictで{(0,0):20, (0,1):42, ...}とかしても良いし(効率が悪いので普通はやりませんが))
kohekoh

2018/11/18 07:36

なるほどです 三次元の正規分布だったら, 三つの変数,三つの平均,3×3の分散 ということですね ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問