画像のnumpy配列への変換についての説明は様々な場所でされていますが、numpy配列の形でバンドの情報を持っている場合に、それらをRGBのカラー画像へと組み合わせて表示する方法が意外と出てこなかったのでメモとして残しておきます。dstackで配列をくっつけてPILに渡しましょう。例では衛星画像のバンドをnumpy配列で取得したものを用いています。
arrayToRGB.py
from PIL import Image
import numpy as np
#B3、B4、B5はLandsat 8衛星のバンドをnumpy arrayとして読み込んだもの
#B5を赤、B4を緑、B3を青として割り振る
B3=(test.read(1)*0.1).astype(np.uint8)
B4=(test.read(2)*0.1).astype(np.uint8)
B5=(test.read(3)*0.1).astype(np.uint8)
print(B3.shape)
#(776, 2274)
im_RGB = np.dstack([B5,B4,B3]) #R,G,Bの順番に対応する配列を置く
print(im_RGB.shape)
#(776, 2274, 3)
pil_img = Image.fromarray(im_RGB,"RGB")
pil_img