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

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

ただいまの
回答率

90.60%

  • Python

    7499questions

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

[python] 配列やリストにおけるインデックスの使い方が分からずに困っています

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 112

mini1988

score 27

A配列の中にある数字と合致する「B配列の中の数字のインデックス」を返し、
その後、そのインデックスをCリストのインデックスとして使いたいのですが、
以下のようなコードでCリストの情報を取り出そうとすると、エラーが出てしまいます。

どうすれば改善されるのか、どなたかご教示いただけないでしょうか?

A_array=np.array([8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, 8560, 8561,
       8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572,
       8573, 8574, 8575, 8576, 8577, 8578, 8579, 8580, 8581, 8582, 8583,
       8584, 8585, 8586, 8587, 8588, 8589, 8590, 8591, 8592, 8593, 8594,
       8595, 8596, 8597, 8598, 8599, 8600, 8601, 8602, 8603, 8604, 8605,
       8606, 8607, 8608, 8609, 8610, 8611, 8613, 8614, 8615, 8616, 8617,
       8618, 8619, 8620, 8621, 8623, 8624, 8625, 8626, 8627, 8628, 8629,
       8630, 8631, 8633, 8634, 8635, 8636, 8637, 8638, 8644, 8645, 8647,
       8648, 8649, 8650, 8651, 8652, 8654, 8656, 8658, 8659, 8660, 8661,
       8662, 8663, 8664, 8665])

B_array=np.array([ 8551,  8552,  8555,  8556,  8557,  8558,  8559,  8560,  8561,
        8562,  8563,  8564,  8566,  8567,  8568,  8569,  8569,  8570,
        8571,  8572,  8572,  8573,  8574,  8575,  8576,  8577,  8578,
        8581,  8582,  8583,  8584,  8585,  8586,  8587,  8588,  8589,
        8590,  8591,  8592,  8593,  8594,  8595,  8596,  8596,  8597,
        8598,  8599,  8600,  8601,  8602,  8603,  8604,  8606,  8607,
        8608,  8609,  8610,  8611,  8612,  8615,  8617,  8618,  8619,
        8633,  8634,  8635,  8636,  8637,  8638,  8639,  8640,  8641,
        8642,  8643,  8644,  8645, 86456,  8647,  8648,  8649,  8650,
        8651,  8652,  8653,  8654,  8655,  8656,  8657,  8658,  8659,
        8660,  8661,  8605,  8612])

C_list=["A","B","C","D","E","F","G","H","I","J","K","L","M","N"]

<私が書いたコード>

print(C_list[np.where(B_array==A_array[4])])

私の上記の記述ではA配列の中にある「8554」の数字に一致したB配列のインデックスを返し、それをCリストのインデックスとして用いてCリスト内の「C」の情報が出力されることを期待しています。

<エラー内容>

TypeError: list indices must be integers or slices, not tuple
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

C_listもnumpyアレイにしないと、そのような記法は使えません。

>>> C_array = np.array(C_list)
>>>
>>> print(C_array[np.where(B_array==A_array[4])])
['C']

あるいは、np.whereの戻り値を数値に直すとか。

>>> np.where(B_array == A_array[4])
(array([2], dtype=int64),)
>>> C_list[np.where(B_array == A_array[4])[0][0]]
'C'

はたまた、B_arrayをいったんリストにしてしまうとか。

>>> C_list[B_array.tolist().index(A_array[4])]
'C'

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/25 15:06

    丁寧な回答をいただきまして、誠にありがとうございました!おかげさまで解決することができました。

    キャンセル

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

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    PHPのSwitch文をコンパクトにする方法

    前提・実現したいこと 初心者で申し訳ありません。 都道府県すべてのあるデータを取得しているのですが、 コードをご覧のとおり、東北地方のeq()変数は(2,4,5)で、関東が(

  • 解決済

    ArrayList データの削除

    前提・実現したいこと ArrayListで一番最後に追加されたデータを削除したいです。 発生している問題・エラーメッセージ 該当のソースコード ここに言語を入力 p

  • 解決済

    PHP/wordpressのショートコード(引数設定)について

    PHPでwordpressの投稿画面に挿入するショートコードについて質問です。 以下の連想配列から、[test gender="◯◯"]と、◯◯の部分に性別を入れたらその性別を持

  • 解決済

    pythonのリスト内包表記

    次のpythonでのfor文をリスト内包表記で書きたいのですがまったくわかりません。。。 for tables in soup.find_all('div'

  • 受付中

    マッチングアプリのロジックについて

    前提・実現したいこと Ruby(Rails)でyentaの用なマッチングアプリを作成しようと考えています。 具体的な仕様としては、毎朝7:00におすすめのユーザーが10人ランダムで

  • 解決済

    pythonのスライスについて

    a = b[:,0] このようなコードがあったとき、どのようなことがおこなわれますか? bはこのコードがなりたつ何かだとすると なにだったら成り立ちますか? すみません、間

  • 解決済

    PHP 連想配列のテーブル表記について

    PHPで連想配列からテーブルを作成しております データの取り出しとループの処理がうまくいきません。 下記のように表示させたいのですが どのような繰り返し処理にすればよいのでしょうか

  • 解決済

    連続したjsonの値を取り出したい

    {"name":"Tom","age":"29","Type":"A"} {"name":"Juddy","age":"25","Type":"B"} {"name":"John"

同じタグがついた質問を見る

  • Python

    7499questions

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