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

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

新規登録して質問してみよう
ただいま回答率
85.35%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

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

Q&A

解決済

3回答

4065閲覧

for文で気になること

kusegasugoi0221

総合スコア11

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

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

0グッド

0クリップ

投稿2020/10/02 04:51

編集2020/10/02 09:36

前提・実現したいこと

for文で繰り返すとき指定した変数が上書きされるのに対処したい。

for文でコードを

sample_file_i.append(sample_i)

として
sample_iの配列をsample_file_iに格納してsample_file_1,sample_file_2,・・・のようにデータセットを抜き取りたいのですが、上記ではiの繰り返しの一番最後の配列、例えばsample_file_99の配列が残りそれより若い番号の配列は上書きで消されてしまいます。どのようにすればよろしいでしょうか。
変数エクスプローラーをみてもsample_file_iの配列が一つあるだけの状態です。

#繰り返し for i in range(1,9): hists_FE_Ti = [] for path in Path("./sample"+str(i)+"-FE").glob("*.jpg"): # グレースケールとして読み込む。 img_i = io.imread(path, as_gray=True) # LBP 特徴量を計算する。 lbp_i = feature.local_binary_pattern(img_i,8,1,method='uniform') # ヒストグラムを計算する。 hist_FE_Ti ,bin_centers_i = exposure.histogram(lbp_i, nbins=256, normalize=True) #histsに各ヒストグラム配列を保存 hists_FE_Ti.append(hist_FE_Ti)

こちらのコードで言うと実行すると
hists_FE_T1,hists_FE_T2,hists_FE_T3、、、をそれぞれ抽出したいのに対して実際に実行すると返されるのはhists_FE_Tiの一つのみになってしまうということです。

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

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

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

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

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

otn

2020/10/02 05:01

forに関連するコードを全部載せましょう。
meg_

2020/10/02 06:29

> for文で繰り返すとき指定した変数が上書きされる よく分からないのでコードで説明してもらえませんか?
kusegasugoi0221

2020/10/02 09:37

掲載させていただきました。 私の持っているコードは都合上掲載できないのですが、探してみると似たような質問のコードがあったため掲載させていただきました。
otn

2020/10/02 09:38

インデントが出鱈目では?Pythonだと正しくインデントしないと動かないし読めません。
meg_

2020/10/02 09:57

> hists_FE_T1,hists_FE_T2,hists_FE_T3、、、をそれぞれ抽出したい 質問のコードではそのような変数は作成されていないので抽出できません。
guest

回答3

0

ベストアンサー

追加していただいたコードについてです。

Python

1for i in range(1,9): 2 hists_FE_Ti = []

単純に変数名に「i」を入れても、これは文字列ですので、ここに数字は入りません。
上記の場合「hists_FE_Ti = []」が繰り返されるだけですので、リストhists_FE_Tiが1つ作られるだけです。
下記のように変える必要があります。

Python

1for i in range(1, 9): 2 exec('hists_FE_T' + str(i) + ' = []') 3

投稿2020/10/02 09:53

takutakuya

総合スコア979

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

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

kusegasugoi0221

2020/10/02 16:22

私のコードでも無事実行できました。丁寧な説明ありがとうございます。
guest

0

やりたいことと一致しているか分かりませんが、forループの中で変数名の数字を変えていきたい場合、下記のようにするとできます。

Python

1sample_1 = [1, 2] 2sample_2 = [3, 4] 3sample_file = [] 4 5for i in range(1, 3): 6 exec("sample_file.append(sample_" + str(i) + ")") 7 8print(sample_file) 9

上記の実行結果

[[1, 2], [3, 4]]

投稿2020/10/02 07:10

takutakuya

総合スコア979

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

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

0

配列の理解が足りていないと感じます
まずは、「python 配列」でぐぐって、出てくるものを一通り読んでみましょう。
その上でわからないことや不明なことがあれば聞けばよろしいかと。

投稿2020/10/02 05:18

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問