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

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

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

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

Python

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

Q&A

解決済

1回答

441閲覧

【Python3.】NumPyを使ってrgb配列を作りたい。

kku6

総合スコア47

NumPy

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

Python

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

0グッド

2クリップ

投稿2017/08/21 09:04

タイトルの通りですが、32×32の画素配列(CIFAR-10の画像です。)が手元にあり、これを変形してmatplotlibで表示させたいです。
とりあえず3×3で書きます。
今、手元にある画素値の配列は

array = [ [[r11,r12,r13], [r21,r22,r23], [r31,r32,r33]], [[g11,g12,g13], [g21,g22,g23], [g31,g32,g33]], [[b11,b12,b13], [b21,b22,b23], [b31,b31,b33]] ]

という形です。[red][green][blue]の順で、一行ずつ画素値が入っています。
これを変形して

img_rgb = [ [[r11,g11,b11],[r12,g12,b12],[r13,g13,b13]], [[r21,g21,b21],[r22,g22,b22],[r23,g23,b23]], [[r31,g31,b31],[r32,g32,b32],[r33,g33,b33]] ] plt.imshow(img_rgb, cmap='gray', interpolation="none")

のように表示したいのですが、pythonに慣れておらずこの変形が出来ません。
今は

img_rgb = np.array([[[32],[32]],[3]]) for i in range(32): for j in range(32): img_rgb[i][j] = np.array([[array[0][i][j], array[1][i][j], array[2][i][j]]], dtype = np.uint8)

のように書いていますがうまくいきません。(list assignment index out of range.と言われます。思ったように画素値が入って行ってくれてないことだけは分かりました。)。
img_rgbの作り方が悪いか、その後のfor文が悪いのかも分かりません。多分img_rgbの形が悪いと考えていますが、色々形を変えてもなかなかうまくいきません。

どなたかどのように直せばいいかご教示ください。
よろしくお願い致します。

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

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

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

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

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

kku6

2017/08/22 03:03

入れ替えるとかではなく、各配列の配列から1つずつ値を持ってくる操作なので違いそうです...。
guest

回答1

0

ベストアンサー

CIFAR-10データでしたら、こんな感じで
numpy.reshape()numpy.transpose()を使用して
簡単に変換できたかと思います

Python

1rgb_data = org_data.reshape(3,32,32).transpose(1,2,0)

投稿2017/08/21 10:50

magichan

総合スコア15898

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

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

kku6

2017/08/22 03:24

実は最初に読み込んだ段階で、おっしゃっていただいたコードを実行していました。 reshapeはすでにされているためtranspose(1,2,0)のみ付けてみたところ無事表示できました。 何故かネガポジ反転された画像がでてきたので、これまでの経緯で反転させてしまった箇所があったようです。やっと先に進むことが出来ます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問