有没有一种方法可以优化矩阵与一组样本的比较?

时间:2019-02-15 10:14:30

标签: python numpy optimization

这是3D相机流式传输场景深度图的情况。相机的分辨率是已知的,并且等于(w,h),在此示例中将其设置为(3,2)。

我尝试将每个新框架与一袋样品进行比较。每个像素具有相同数量的要比较的样本,已知样本数量相同,在此示例中等于4。样本袋具有以下形状(w,h,nb_sample),在此示例中等于(3、2、4)。

我从0循环到nb_sample,以将新帧与样本进行比较。如果该差高于阈值R,则计数器增加。

问题是:有没有一种方法可以优化循环?

import numpy as np

w = 3
h = 2
nb_sample = 4
R = 0.5

new_matrix = np.random.rand(w,h)

sample = np.random.rand(w, h, nb_sample)

count = np.zeros((w,h))

for index in range(0, nb_sample):
    distance = np.abs(new_matrix - sample[:, :, index])
    count[distance < R] += 1

print(count)

1 个答案:

答案 0 :(得分:1)

尝试以下两行解决方案:

distance = np.abs(sample - new_matrix[:,:,np.newaxis])
np.sum(distance < R, axis = -1)

说明

通过使用new_matrix numpy向np.newaxis添加一个维度,可以使用sample操作计算-中每个矩阵的差。

然后distance < R的计算方式与您的代码相同。 TrueFalse在python中分别表示为10,这就是为什么可以沿右轴将它们简单地添加在一起的原因。

相关问题