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