PIL / 2次元排列の全要素のインデックスを収容した3次元排列を作る

2次元排列の先頭、末尾のインデックス(負数を許容)を指定することにより、全要素のインデックスを収容した3次元排列を作ることを考える。forループを使えば簡単に出来るが使わない。
(追記: numpy.where()という函数があった(2018年12月6日))

f:id:ti-nspire:20181006085809p:plain:w400

import numpy as np

def matRC(fromRC, toRC):
    # 先頭座標、末尾座標をndarrayにし、念のため整数に四捨五入しておく。
    fromRC, toRC = np.array([fromRC, toRC]).round(0).astype("int16")

    # 作成する排列の行数(高さ)、列数(幅)を取得しておく。
    numOfRows, numOfCols = (toRC - fromRC) + 1

    # 作成する排列と同じサイズの空排列を作っておく。
    mat = np.empty([numOfRows, numOfCols, 2]).astype("int16")

    # 行座標を代入する
    mat[:,:,0] = np.arange(fromRC[0], toRC[0]+1).reshape(numOfRows, 1)

    # 列座標を代入する
    mat[:,:,1] = np.arange(fromRC[1], toRC[1]+1)

    return mat
    
########
# test #
########
if __name__ == "__main__":
    print(matRC(fromRC=[-2,-1], toRC=[3, 4]))

実行結果(整形した):
f:id:ti-nspire:20181006090452p:plain:w400