如何在2D numpy 数组中阈值向量[ u,v ] ?

By simon at 2019-05-19 • 0人收藏 • 13人看过

我编写了一个阈值函数 TH (arr,threshold) ,该函数接受一个2D 向量数组[ u,v ] ,如果它们的绝对值都低于指定的阈值,则将 u 和 v 设置为0。

这个函数由2个 for-loop 组成并执行这个任务,但是计算量很大(我在大型数据集上运行它)。

例子:

[ u,v ] -- 输出(阈值1)

[2,2] -- [2,2]

[2,. 1] -- [2,. 1]

[ . 1,. 1] -- [0,0]

我还可以使用哪些其他方法 / 功能来更有效地解决这个问题(使用列表内涵或其他方法) ?

下面是一些代码:

句子太长,请短一点

输出:

[0]. 0. ] [3. 4. ] [3. [0.1][0. 2. ] [0. 0. ] [0.33] [0. 0. ] [0. 0. ] [0.55] 运行时间: 0.0009984970092773438
1 个回复 | 最后更新于 2019-05-19
2019-05-19   #1

只需沿着最后一个轴对两个元素进行切片,并以矢量化的方式执行相同的操作,以获得一个掩码,最后用掩码索引到输入数组中进行分配0s-

Mask (np.abs (a [ ... ,0]) threshold) & (np.abs (a [ ... ,1]) threshold) a [ mask ]0

登录后方可回帖

Loading...