python - 有没有办法优化矩阵与一组样本的比较?
问题描述
这是 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)
解决方案
试试这两条线的解决方案:
distance = np.abs(sample - new_matrix[:,:,np.newaxis])
np.sum(distance < R, axis = -1)
说明:
通过添加一个维度到new_matrix
numpynp.newaxis
可以计算每个矩阵在sample
使用-
操作中的差异。
然后distance < R
像在您的代码中一样计算。True
和在 pythonFalse
中表示为1
和0
,这就是为什么它们可以简单地沿右轴相加。
推荐阅读
- r - 我如何在 R 中绘制回归树
- flutter - Flutter-web:与按钮相对位置的对话框
- python - 将 mxnet 与 CUDA 一起使用会冻结 python
- r - Calculate frequency of all possible combinations of substrings in a vector
- python - 为什么dockerfile中有空白requirement.txt
- database - 是否有一种解决方案允许从猫鼬中完全相同的快照中读取多个集合?
- http-post - 如何将 POST 请求的编码从 ISO-8859-1 更改为 UTF-8
- javascript - 如何根据 React 中导入的数据传递不同的值?
- c++ - 如何更改分辨率和更新窗口而不闪烁
- php - bind_param() 在第一个非数字字符处截断输入