🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
NumPy

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

Python 3.x

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

Python

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

Q&A

解決済

2回答

1915閲覧

Python 複数のnumpy配列の要素の大小を比較したい

SuzuAya

総合スコア71

NumPy

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2019/10/08 01:59

編集2019/10/08 02:41

前提・実現したいこと

以下のような5つの配列の要素の大きさをインデックスごとに比較し、一番値が大きいものを取り出してoutlier=[]に追加したい時にはコードをどう書けば良いか知りたいです。
たとえば、最初の要素を比較すると、outlier_Aの0.77が1番大きいので、それを取り出し、outlier=[]に追加し、2つ目の要素はoutlier_Dの0.98が1番大きいのでそれを取り出して追加し…ということをやりたいです。

outlier_A = [0.77, 0.89, 0.68, … 0.92]
outlier_B = [0.43, 0.91, 0.03, … 0.14]
outlier_C = [0.23, 0.87, 0.66, … 0.09]
outlier_D = [0.05, 0.98, 0.24, … 0.65]
outlier_E = [0.12, 0.43, 0.29, … 0.87]

2つの配列の大小比較の方法は検索するとたくさん出てきたのですが、3つ以上の配列の大小比較の方法を検索しても見つけることができなかったためこちらに質問をさせていただきました。

お手数をお掛けし恐れ入りますが、アドバイスいただけますと大変助かります。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

結果だけを見ると、単純にmaxだけで良いかも

python

1import numpy as np 2outlier_A = [0.77, 0.89, 0.68, 0.92] 3outlier_B = [0.43, 0.91, 0.03, 0.14] 4outlier_C = [0.23, 0.87, 0.66, 0.09] 5outlier_D = [0.05, 0.98, 0.24, 0.65] 6outlier_E = [0.12, 0.43, 0.29, 0.87] 7 8""" 9out = np.stack([ 10 np.array(outlier_A), 11 np.array(outlier_B), 12 np.array(outlier_C), 13 np.array(outlier_D), 14 np.array(outlier_E) 15 ]) 16print(np.max(out, axis=0)) 17print("---") 18print(np.max(out, axis=1)) 19 20 21 22[0.77 0.98 0.68 0.92] 23--- 24[0.92 0.91 0.87 0.98 0.87] 25

投稿2019/10/08 03:19

t_obara

総合スコア5488

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

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

SuzuAya

2019/10/08 04:35

>t_obara様 ご回答ありがとうございます!このようなやり方もできるのですね。まだまだ初心者なので、皆様に色々教えていただけてとても勉強になります。ありがとうございます。
guest

0

ベストアンサー

python

1import numpy as np 2 3outlier_A = np.array([0.77, 0.89, 0.68,0.92]) 4outlier_B = np.array([0.43, 0.91, 0.03,0.14]) 5outlier_C = np.array([0.23, 0.87, 0.66,0.09]) 6outlier_D = np.array([0.05, 0.98, 0.24,0.65]) 7outlier_E = np.array([0.12, 0.43, 0.29,0.87]) 8 9outlier_ABCDE = np.stack([outlier_A, outlier_B, outlier_C, outlier_D, outlier_E]) 10outlier = np.sort(outlier_ABCDE, axis=0)[-1]

または

python

1import numpy as np 2 3outlier_A = np.array([0.77, 0.89, 0.68,0.92]) 4outlier_B = np.array([0.43, 0.91, 0.03,0.14]) 5outlier_C = np.array([0.23, 0.87, 0.66,0.09]) 6outlier_D = np.array([0.05, 0.98, 0.24,0.65]) 7outlier_E = np.array([0.12, 0.43, 0.29,0.87]) 8 9outlier_ABCDE = np.stack([outlier_A, outlier_B, outlier_C, outlier_D, outlier_E]) 10outlier = np.diag(outlier_ABCDE[np.argmax(outlier_ABCDE, axis=0)])

投稿2019/10/08 02:29

編集2019/10/08 02:38
qax

総合スコア622

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

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

SuzuAya

2019/10/08 02:35

>qax様 早速のご回答ありがとうございます! 私の説明が分かりにくくて申し訳ありません。やりたいことをもう少し明確にし、質問文に追記いたしましたのでご確認いただけますと幸いです。
qax

2019/10/08 02:37

ご希望の処理ができていないでしょうか? 補足 質問文のリストは一部ピリオドがカンマになっていると思われます。
SuzuAya

2019/10/08 02:42

>qax様 ご確認ありがとうございます。今すぐに試せる環境にないのですが、本日中に試してみます。 ピリオドのご指摘もありがとうございます!修正いたしました。大変助かりました。
qax

2019/10/08 02:54 編集

以下ではなくて、 outlier_A = [0.77, 0.89, 0.68, … 0.92]  → 0.92 outlier_B = [0.43, 0.91, 0.03, … 0.14]  → 0.91 outlier_C = [0.23, 0.87, 0.66, … 0.09] → 0.87 outlier_D = [0.05, 0.98, 0.24, … 0.65] → 0.98 outlier_E = [0.12, 0.43, 0.29, … 0.87] → 0.87 以下のように求めたいということですよね? outlier_A = [0.77, 0.89, 0.68, … 0.92] outlier_B = [0.43, 0.91, 0.03, … 0.14] outlier_C = [0.23, 0.87, 0.66, … 0.09] outlier_D = [0.05, 0.98, 0.24, … 0.65] outlier_E = [0.12, 0.43, 0.29, … 0.87]       ↓  ↓  ↓    ↓       0.77 0.98 0.68   0.92 そうであれば、そのように実装しています。
SuzuAya

2019/10/08 04:34

>qax様 ご説明ありがとうございます。はい、やりたいことはご理解のとおりです。 ご丁寧にご回答いただきまして大変助かりました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問