【发布时间】:2022-11-29 15:48:52
【问题描述】:
我有一个大小为 NXN 的矩阵 A,带有浮点值和另一个大小为 NXN 的布尔矩阵 B
对于每一行,我需要找到 A 中属于索引的所有值的平均值,其中 True 是矩阵 B 中该索引的对应值
同样,我需要找到 A 中属于索引的所有值的平均值,其中 False 是矩阵 B 中该索引的对应值
最后,我需要找到“真”均值小于“假”均值的行数
例如 :
A = [[1.0, 2.0, 3.0]
[4.0, 5.0, 6.0]
[7.0, 8.0, 9.0]]
B = [[True, True, False]
[False, False, True]
[True, False, True]]
最初,计数 = 0
对于第 1 行,true_mean = 1.0+2.0 / 2 = 1.5 和 false_mean = 3.0
true_mean < false_mean,所以计数 = 0+1=1
对于第 2 行,true_mean = 6.0 和 false_mean = 4.0+5.0 / 2 = 4.5
true_mean > false_mean,所以计数保持不变
对于第 3 行,true_mean = 7.0+9.0 / 2 = 8.0 和 false_mean = 8.0
true_mean == false_mean,所以计数保持不变
最终计数值 = 1
我的尝试:-
true_mat = np.where(B, A, 0)
false_mat = np.where(B, 0, A)
true_mean = true_mat.mean(axis=1)
false_mean = false_mat.mean(axis=1)
但这实际上给出了错误的答案,因为分母不完全是该行中真/假值的数量,而是“N”
我只需要计数,不需要 true_mean 和 false_mean
无论如何要修复它?
【问题讨论】:
标签: python arrays numpy tensorflow boolean