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

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

詳細はこちら
多次元配列

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

NumPy

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

配列

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

Q&A

解決済

1回答

1696閲覧

パディングするためのfor文の書き方が分からない

dbrow

総合スコア18

多次元配列

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

NumPy

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

配列

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

0グッド

0クリップ

投稿2019/12/29 03:29

####1. やりたいこと
numpy配列のゼロパディング

####2.具体的には
最終的には(3000,28,28)の配列をゼロパディングして(3000,32,32)としたい。
一旦、小さめの配列を作って、0番目の配列から1つずつfor文に渡していき、パディングできるか試していますが、その段階でうまくいきません。。

####3. ソースコード
a = np.random.randint(1,10,(3,2,2))
for i in range(a[i])
d = np.pad(a, [(2,2),(2,2)])

不足情報があればなんなりとお申し付けください。
宜しくお願い致します。

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

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

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

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

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

y_waiwai

2019/12/29 04:29

あなたのいうパディングとはどういうことかいまいち不明です。 どういう結果になってほしいのか提示してみてください
dbrow

2019/12/29 05:54

ご指摘ありがとうございます。 2×2の配列の外側に、特定の数字(今回は0)を付け足したいです。 配列1つであれば以下の通りコードが書けますが、この配列が多数(3000)あるため、for文でこの処理を書きたいと思っております。 ## 例 a = np.random.randint(1,10,(2,2)) print(a.shape) >(2, 2) print(a) >[[4 8] [4 6]] b = np.pad(a, [(1,1),(1,1)]) print(b.shape) >(4, 4) print(b) >[[0 0 0 0] [0 4 8 0] [0 4 6 0] [0 0 0 0]] パディングの説明→https://qiita.com/horitaku1124/items/6ae979b21ddc7256b872
meg_

2019/12/29 06:10

コードは「コードの挿入」で記入しましょう。
guest

回答1

0

ベストアンサー

【追記】次元毎に0パディングする数を変える場合です。

Python

1a = np.ones((2,3,3)) 2#array([[[1.,1.,1.], 3# [1.,1.,1.], 4# [1.,1.,1.]], 5# [[1.,1.,1.], 6# [1.,1.,1.], 7# [1.,1.,1.]]]) 8 9a = np.pad(a, ((0,0),(2,2),(2,2)), 'constant') 10#array([[[0., 0., 0., 0., 0., 0., 0.], 11# [0., 0., 0., 0., 0., 0., 0.], 12# [0., 0., 1., 1., 1., 0., 0.], 13# [0., 0., 1., 1., 1., 0., 0.], 14# [0., 0., 1., 1., 1., 0., 0.], 15# [0., 0., 0., 0., 0., 0., 0.], 16# [0., 0., 0., 0., 0., 0., 0.]], 17# 18# [[0., 0., 0., 0., 0., 0., 0.], 19# [0., 0., 0., 0., 0., 0., 0.], 20# [0., 0., 1., 1., 1., 0., 0.], 21# [0., 0., 1., 1., 1., 0., 0.], 22# [0., 0., 1., 1., 1., 0., 0.], 23# [0., 0., 0., 0., 0., 0., 0.], 24# [0., 0., 0., 0., 0., 0., 0.]]]) 25

Python

1a = np.random.randint(1,10,(2,2)) 2#array([[2,4], 3# [4,3]]) 4 5b = np.pad(a,[2,2],'constant') 6#array([[0,0,0,0,0,0], 7# [0,0,0,0,0,0], 8# [0,0,2,4,0,0], 9# [0,0,4,3,0,0], 10# [0,0,0,0,0,0], 11# [0,0,0,0,0,0],

投稿2019/12/29 06:23

編集2019/12/30 02:46
meg_

総合スコア10736

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

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

dbrow

2019/12/29 12:34

ありがとうございます。(3000, 28, 28)のような3000個の28*28に対して全て上記の処理を行いたい場合には、どうすればいいでしょうか。
meg_

2019/12/29 17:10

forループで処理すれば良いと思います。
dbrow

2019/12/29 23:17

もし良ければコードをご教示頂いても宜しいでしょうか。 処理後の配列は3000*32*32としたいです。
dbrow

2019/12/30 02:27 編集

下記のコードで動き、問題ないようなのですが、もし誤りあればご教示いただけると幸いです。 Z = np.zeros((3000,32,32)) for i in range(2999): c = train_data[i] Z[i] = np.pad(c, (2,2), 'constant')
meg_

2019/12/30 02:47

ループ使わない方法がありましたので、回答に追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問