次のnumpy配列があるとします:
>>a
array([[0, 0, 2],
[2, 0, 1],
[2, 2, 1]])
>>b
array([[2, 2, 0],
[2, 0, 2],
[1, 1, 2]])
それから私は垂直に積み重ねます
c=np.dstack((a,b))
その結果:
>>c
array([[[0, 2],
[0, 2],
[2, 0]],
[[2, 2],
[0, 0],
[1, 2]],
[[2, 1],
[2, 1],
[1, 2]]])
これから、c の 3 次元ごとに、この部分配列にどの組み合わせが存在するかを確認し、それに応じてリスト一致のインデックスに番号を付けたいと思います。以下を試してみましたが、うまくいきません。アルゴリズムは二重の for ループで十分に単純ですが、c が非常に大きいため、法外に遅くなります。
classes=[(0,0),(2,1),(2,2)]
out=np.select( [h==c for h in classes], range(len(classes)), default=-1)
私の望ましい出力は
out = [[-1,-1,-1],
[3, 1,-1],
[2, 2,-1]]