请假设A
是4 x 4
的矩阵,其中包含:
A = 1 0 1 0
1 0 1 0
1 1 1 0
1 1 0 0
B
是一个参考矩阵(4 x 4
),它是:
B = 1 0 1 0
1 0 1 0
1 0 1 0
1 1 1 0
现在,如果将A
与作为参考矩阵的B
进行比较,则通过匹配这两个矩阵,除A(4,3)
和A(3,2)
外,几乎所有成员都相等。但是,由于B
是参考矩阵,A
正在与之比较,因此这些成员的差异只是1
中B
的问题。在这个特定的例子中,A(4,3)
只是问题,而不是A(3,2)
,意思是:
>> C = B ~= A;
ans =
0 0 0 0
0 0 0 0
0 1 0 0
0 0 1 0
A(4,3) ~= B(4,3)
最后,我们正在寻找一段代码,可以显示A
中有多少百分比等于B
的等效成员。在这种情况下,差异是:
(8 / 9) * 100 = 88.89 %
匹配。
请记住速度在这里也很重要。因此,更快速的解决方案更受欢迎。谢谢。
答案 0 :(得分:2)
如果我做对了,你想知道的是 from ._ufuncs import *
ImportError: DLL load failed: The specified module could not be found.
和<?php
/**
* Created by PhpStorm.
* User: jokuf
* Date: 7/19/15
* Time: 8:34 PM
*/
$melee = array(
"ct-knife" => "link",
"t-knife" => "link",
"zeus" => "link"
);
function selectWeapon($melee){
$i = 0;
echo '<select>';
while ($i < count($melee)) {
foreach ($melee AS $key => $value) {
echo '<option>' . $key . '</option>';
$i++;
}
}
echo '</select>';
}
selectWeapon($melee);
。
试试这个:
B == 1
要获得百分比,您可以尝试:
A == 0
答案 1 :(得分:2)
要仅获取1
中B
的不同条目,只需向其中添加&
,这样您就只能获得这些条目。要获得百分比,请sum
A
和B
为1
。然后将其除以1
中B
的总和(或1
中A
的总和 - &gt; ,请参阅下面的注释)。
A = [1 0 1 0;
1 0 1 0;
1 1 1 0;
1 1 0 0];
B = [1 0 1 0;
1 0 1 0;
1 0 1 0;
1 1 1 0];
C = (B ~= A) & B
p = sum(B(:) & A(:)) / sum(B(:)) * 100
结果如下:
C =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 0
p =
88.8889
编辑/注意:在OP的问题中,如果他想要与A
或B
中的百分比相关的百分比,则不是100%清楚。我假设它是参考矩阵的百分比,即B
。因此,我除以sum(B(:))
。如果您需要参考A
中的那些,只需将最后一行更改为:
p = sum(B(:) & A(:)) / sum(A(:)) * 100
答案 2 :(得分:2)
你可以使用矩阵乘法,它必须非常有效,如下所列。
获取与A
-
percentage_wrtA = A(:).'*B(:)/sum(A(:)) * 100;
获取与B
-
percentage_wrtB = A(:).'*B(:)/sum(B(:)) * 100;
运行时测试
这里有一些快速运行时测试,用于将矩阵乘法与元素求和与(:)
和ANDing
进行比较 -
>> M = 6000; %// Datasize
>> A = randi([0,1],M,M);
>> B = randi([0,1],M,M);
>> tic,sum(B(:) & A(:));toc
Elapsed time is 0.500149 seconds.
>> tic,A(:).'*B(:);toc
Elapsed time is 0.126881 seconds.
答案 3 :(得分:1)
尝试:
sum(sum(A & B))./sum(sum(A))
输出:
ans =
0.8889