<p>我想计算2个numpy数组的灵敏度和特异性(test,truth)。两个数组的形状相同,只存储数字0(test/truth false),1(test/truth true)。因此我必须计算假阳性,真阳性,假阴性和真阴性。我是这样做的:</p>
<pre class="lang-py prettyprint-override"><code>true_positive = 0
false_positive = 0
false_negative = 0
true_negative = 0
for y in range(mask.shape[0]):
for x in range(mask.shape[1]):
if (mask[y,x] == 255 and truth[y,x] == 255):
true_positive = true_positive + 1
elif (mask[y,x] == 255 and truth[y,x] == 0):
false_positive = false_positive + 1
elif (mask[y,x] == 0 and truth[y,x] == 255):
false_negative = false_negative + 1
elif (mask[y,x] == 0 and truth[y,x] == 0):
true_negative = true_negative + 1
sensitivity = true_positive / (true_positive + false_negative)
specificity = true_negative / (false_positive + true_negative)
</code></pre>
<>我认为可能存在一个更容易(更可读)的方式,因为它是Python而不是C++…首先,我尝试了如下操作:<code>true_positive = np.sum(mask == 255 and truth == 255)</code>但是我得到了一个错误:</p>
<blockquote>
<p>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</p>
</blockquote>
<p>有没有一种更像Python的方法来计算敏感性和特异性?在</p>
<p>谢谢!在</p>