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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1567閲覧

複数の配列のfor文処理

noronoron

総合スコア16

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2018/10/22 08:51

編集2018/10/22 09:05

前提・実現したいこと

item_newは2次元配列で,item_uniqueは1次元配列です.
item_uniqueの配列の中にitem_newと同じ値があれば,新しい配列の中の,item_uniqueでその値がとるindexに1を追加していき,なければ0を格納したいと考えています.
それをitem_newの外の配列の数だけ繰り返したいと考えています.
うまく説明できずすみません.
入力は2次元配列と1次元配列の2つです.
出力は2次元配列です.

発生している問題・エラーメッセージ

実行すると,以下のエラーが出ました.

IndexError: list index out of range

該当のソースコード

for i in range(len(item_new)): #len(item_new)=3 data1 = [] for v in range(len(item_unique)): #len(item_unique)=52 if item_unique.__getitem__(v) is item_new.__getitem__(i): data1[i][v]+=1 else: data1[i][v]+=0

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

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

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

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

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

tiitoi

2018/10/22 09:00

ちょっと説明がよくわからないので、入力と期待する出力を質問欄を編集して記載していただけますか。
noronoron

2018/10/22 09:14

すみません.出力に関して,入力の2次元配列の大きさの配列です.入力の2次元配列の中の配列には重複する要素も存在し得ます.1次元配列と同じ要素があれば,その要素の個数分カウントし,出力の2次元配列に格納します.
guest

回答1

0

ベストアンサー

一番簡単なのはnumpy使うやつですかね。

python

1import numpy as np 2 3# (len(item_new), len(item_unique)の大きさですべての値が0で初期化された配列data1を用意 4data1 = np.zeros((len(item_new), len(item_unique))) 5for i in range(len(item_new)): 6 for v in range(len(item_unique)): 7 if item_unique[i] in item_unique[v]: # 配列要素が別の配列に入っているかはinでできます 8 data1[i][v] += 1

やりたいのはこんな感じのものでしょうか?

投稿2018/10/22 09:00

編集2018/10/22 09:01
Yhaya

総合スコア439

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

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

noronoron

2018/10/22 09:24

ありがとうございます. 今実行してみたところ,TypeError: argument of type 'int' is not iterable のエラーが出力されたのですが,これはどのように対処すればよいでしょうか?
Yhaya

2018/10/22 10:14

rangeとかつけ忘れてないですか?
noronoron

2018/10/22 10:58

確認しましたが,rangeも付いていて上記の通りなのですが,TypeErrorが出ます.
noronoron

2018/10/22 11:16

解決しました. in演算子はint型を処理できないため, if item_unique[i] in item_unique[v]: の1文は if str(item_unique[i]) in str(item_unique[v]): に変更する必要がありました. お手数お掛けしました.有難うございます.
Yhaya

2018/10/22 11:20

エラーメッセージコピペしてもらえますか?
Yhaya

2018/10/22 11:21

解決したならよかったです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問