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

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

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

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

Python 3.x

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

Python

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

Q&A

解決済

2回答

15510閲覧

numpy argmaxの引数axisについて

退会済みユーザー

退会済みユーザー

総合スコア0

NumPy

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

Python 3.x

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

Python

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

0グッド

2クリップ

投稿2017/05/01 14:05

np.argmaxの引数axisについて理解が出来ない部分があります

python

1import numpy as np 2 3x=np.array([30,20,10]) 4print(np.argmax(x,axis=0))

実行結果
0

python

1import numpy as np 2 3x=np.array([[30,20,10],[40,50,60]]) 4print(np.argmax(x,axis=0))

実行結果
[1 1 1]

axisの引数を省略した場合と、1を与えた場合の動きは理解出来たのですが
このように引数に0を与えた時の動きがどうなっているかがわからずじまいです...

わかる方いらしたら挙動について詳しくお願いします><

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

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

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

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

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

guest

回答2

0

ベストアンサー

2次元配列の場合、axis=0→列方向、axis=1→行方向となりますが、直感的には理解しずらいですね。
3次元以上を考える場合、以下が参考にはならないでしょうか?
NumPyでのaxis指定
ちなみにaxisを省略した場合はflatten=1次元配列上での位置になります。

投稿2017/05/01 14:30

can110

総合スコア38266

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

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

退会済みユーザー

退会済みユーザー

2017/05/01 14:42

ありがとうございます! 貼ってくださったサイトのお陰で理解する事が出来ました>< また機会があればお願いします!
guest

0

質問に上げて頂いた2つ目のソースコードにおいて

配列xの値は

[[30 20 10] [40 50 60]]

となっております。
np.argmpax(data,axis=0) の場合は列毎に 最大値の場所(インデックス値)を返しますので、
(30,40) (20,50) (10,60) のそれぞれの最大値の場所(Index)は (40),(50),(60)のIndex値、つまり
(1,1,1)
となります。

また、np.argmpax(data,axis=1) の場合は行毎に 最大値の場所(インデックスの場所を返すので
(30,20,10) (40,50,60) のそれぞれの最大値の場所(Index)は (30),(60)のIndex値、つまり
(0,2)
となります。

また、axisを省略した場合は 行列全体の最大値を、一次配列変換(flatten)した場合(Index値)で返すので
(30,20,10,40,50,60) の最大値(60)の場所(Index)
5
がリターン値となります。

最後に、一つ目のコードに関しては 一次配列の為、単に
(30,20,10) の最大値の場所
0
が戻り値となります

一次配列では axis=1 は選択できません

投稿2017/05/01 14:47

magichan

総合スコア15898

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

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

退会済みユーザー

退会済みユーザー

2017/05/01 15:01

回答ありがとうございます! 一次元配列の時にaxis=1を指定するとエラーが起きていたので、出来ないものなのかなと疑心半期だったのですが、確信が持てました また機会があればお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問