假设我有以下numpy数组:
>>a
array([[0, 0, 2],
[2, 0, 1],
[2, 2, 1]])
>>b
array([[2, 2, 0],
[2, 0, 2],
[1, 1, 2]])
然后垂直堆叠
^{pr2}$导致:
>>c
array([[[0, 2],
[0, 2],
[2, 0]],
[[2, 2],
[0, 0],
[1, 2]],
[[2, 1],
[2, 1],
[1, 2]]])
由此,我希望,对于c的每个3d维,检查这个子数组中存在哪个组合,然后根据列表匹配的索引对其进行编号。我试过下面的方法,但没用。对于双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]]
您可以像这样分别测试a和b阵列:
它将获得所需的结果(除了返回0,1,2而不是1,2,3)。在
这个怎么样:
它会返回你真正需要的东西
^{pr2}$这里有另一种方法可以得到你想要的,我会把它贴出来,以防对任何人有用。在
相关问题 更多 >
编程相关推荐