Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像分析——映射两个带标签的Numpy数组_Numpy - Fatal编程技术网

图像分析——映射两个带标签的Numpy数组

图像分析——映射两个带标签的Numpy数组,numpy,Numpy,我有两个Numpy数组,数组A和数组B,它们的维数相等。数组A是一个带标签的数组,其中与相同“对象”对应的元素共享相同的值。基本上,我要做的是针对数组B中的每个非零元素,如果该元素对应于数组a中的一个非零元素,则重新标记该对象(数组a中)的每个元素,对应于数组B中的值 例如,如果我有: array A = [[0, 0, 1, 0, 0], [0, 1, 1, 1, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0

我有两个Numpy数组,数组A和数组B,它们的维数相等。数组A是一个带标签的数组,其中与相同“对象”对应的元素共享相同的值。基本上,我要做的是针对数组B中的每个非零元素,如果该元素对应于数组a中的一个非零元素,则重新标记该对象(数组a中)的每个元素,对应于数组B中的值

例如,如果我有:

array A = [[0, 0, 1, 0, 0],
           [0, 1, 1, 1, 0],
           [0, 0, 1, 0, 0],
           [0, 0, 0, 0, 2],
           [3, 0, 0, 2, 0],
           [3, 3, 0, 2, 0]]

array B = [[0, 0, 4, 4, 4],
           [4, 4, 4, 4, 4],
           [0, 4, 4, 0, 0],
           [0, 4, 4, 4, 4],
           [0, 0, 4, 4, 4],
           [5, 0, 0, 0, 0]]
我希望生成的数组C如下所示:

array C = [[0, 0, 4, 0, 0],
           [0, 4, 4, 4, 0],
           [0, 0, 4, 0, 0],
           [0, 0, 0, 0, 4],
           [5, 0, 0, 4, 0],
           [5, 5, 0, 4, 0]]
编辑:就我的目的而言,A中的一个“对象”不能属于B中的多个“对象”。例如,A(上面)中的每个非零元素都映射到B中的A 4或A 5,但决不能同时映射到这两个元素

对不起,如果这个解释有点复杂的话。我将感谢任何人能提供的任何帮助或指导

这是有效的:

C=np.类零(A)
labels=set(A.flatte())-{0}
对于标签中的标签:
掩码=(A==标签)
value=set(B[mask].flatte())-{0}
C[掩码]=[*值][0]
也许有人可以指出一种更优雅的方法来找到

这种方法有效:

C=np.类零(A)
labels=set(A.flatte())-{0}
对于标签中的标签:
掩码=(A==标签)
value=set(B[mask].flatte())-{0}
C[掩码]=[*值][0]

也许有人可以指出更优雅的方法来找到

谢谢你的评论…我添加了一个示例案例。希望它有意义。那些在
C[4,0]
C[5,1]
5s
,不应该是
0s
?类似地,在
C[5,3]
处的
4
。你能再检查一下吗?因为A[5,0]处的元素与B中的A 5匹配,我希望A中属于标签3的其余元素也变成5s。但我仍然不明白这是一个定义良好的问题。如果
A
中的一个“对象”属于
B
中的两个不同对象,您将如何处理这种情况?或者这是绝对不可能的?非常感谢您指出--我应该提到,出于我的目的,A中的一个对象不能属于B中的多个对象。感谢您的评论…我添加了一个示例案例。希望它有意义。那些在
C[4,0]
C[5,1]
5s
,不应该是
0s
?类似地,在
C[5,3]
处的
4
。你能再检查一下吗?因为A[5,0]处的元素与B中的A 5匹配,我希望A中属于标签3的其余元素也变成5s。但我仍然不明白这是一个定义良好的问题。如果
A
中的一个“对象”属于
B
中的两个不同对象,您将如何处理这种情况?或者这是绝对不可能的?非常感谢你指出这一点——我应该提到,出于我的目的,A中的一个对象不能属于B中的多个对象。