假设我有以下 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 的每个第三维,检查该子数组中存在哪个组合,然后使用列表匹配的索引对其进行相应的编号。我尝试了以下方法,但它不起作用。该算法使用双 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]]