回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>有以下四种图像阵列:</p>
<pre><code>image1 = np.array([
[
# [R G B]
# | | |
[1, 2, 3], [11, 22, 55], [12, 45, 56]
],
[
[1, 2, 3], [56, 55, 13], [12, 45, 56]
],
[
[11, 22, 55], [56, 55, 13], [12, 45, 56]
],
])
image2 = np.array([
[
[91, 72, 33], [111, 222, 155], [212, 245, 156]
],
[
[100, 200, 113], [56, 255, 213], [112, 145, 156]
],
[
[113, 223, 255], [156, 55, 113], [212, 245, 156]
],
])
image3 = np.array([
[
[9, 2, 3], [111, 222, 255], [22, 25, 16]
],
[
[10, 20, 13], [156, 25, 23], [12, 45, 16]
],
[
[13, 23, 155], [56, 255, 13], [222, 235, 216]
],
])
image4 = np.array([
[
[29, 22, 23], [111, 222, 255], [223, 125, 216]
],
[
[210, 220, 13], [156, 252, 232], [122, 145, 216]
],
[
[123, 232, 155], [56, 255, 213], [222, 235, 216]
],
])
</code></pre>
<p>对于每一行和每一列,我想计算图像数组的<code>Red & Green & Blue</code>通道之和的max<code>RGB</code>值,并使用max来构建一个新的图像数组</p>
<p>因此,在尝试了以下代码之后,它得到了重复的索引,因为在每行和每列中,三个图像数组的max<code>RGB</code>可能是重复的。但我只想得到第一个匹配索引</p>
<pre><code>array = np.array([image1, image2, image3, image4])
array_sum = array.sum(axis=3)
# array_sum_max_index = array_sum.argmax(axis=0)
indices = np.where(array_sum == array_sum.max(axis=0))
print(indices)
</code></pre>
<p>输出</p>
<pre><code>(array([1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3]), array([0, 0, 2, 0, 2, 0, 1, 1, 1, 2, 2]), array([0, 2, 0, 1, 2, 1, 0, 1, 2, 1, 2]))
</code></pre>
<p>在这个{a1}中有一个类似的答案,但它不能解决我的问题。因此,如何在索引首次匹配时获取索引</p>
<p><strong>编辑:</strong></p>
<p>输入图像的实际数量超过<code>32</code>。(因此,涉及<code>numpy.choose()</code>的解决方案可能不起作用)</p>