【问题标题】:Numpy substract element wise from another tensor element [duplicate]Numpy从另一个张量元素中减去元素[重复]
【发布时间】:2019-09-13 23:41:49
【问题描述】:

我不知道如何为我的问题命名。我知道的唯一术语是broadcastingelement wise。如果不准确,请更正我的标题。

背景:
以前我正在研究文本检测。但是,检测到的图片有点小我无法从cropped image 获得全部信息。我知道我正在使用基于英语的分类器进行单词检测。

因此,我必须稍微调整裁剪的坐标以重叠泰语句子。这是一个较小的裁剪区域的示例。您可以看到标点符号和声调符号部分丢失

我在名为pts的数组中表示了 3 个方格

ipdb> pts
array([[[ 436, 3085],
        [2968, 3081],
        [2968, 3227],
        [ 436, 3232]],

       [[1222,  397],
        [1833,  400],
        [1833,  498],
        [1221,  496]],

       [[  86, 3275],
        [2968, 3268],
        [2968, 3421],
        [  87, 3427]]], dtype=int32)
ipdb> pts.shape
(3, 4, 2)

稍后我进行计算以找到它们的中心 np.sum(pts, axis=1) / 4.0。我把它发给center_pts

ipdb> center_pts
array([[1702.  , 3156.25],
       [1527.25,  447.75],
       [1527.25, 3347.75]])
ipdb> center_pts.shape
(3, 2)

终极目标:
我想覆盖丢失的标点符号和声调

尝试:
我正在尝试做减法以从正方形中心制作矢量参考并指向每个角。并且用小因素覆盖裁剪图像的丢失部分。

我的第一个想法是牺牲一个 for 循环和明智地使用元素来利用这样的广播。

pts[0] - center_pts[0]
array([[-1266.  ,   -71.25],
       [ 1266.  ,   -75.25],
       [ 1266.  ,    70.75],
       [-1266.  ,    75.75]])

问题:
1.没有for-loop可以吗?
2. 他们扩大我的广场是否更有成效?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    这可以在broadcasting 的帮助下完成:

    pts - center_pts[:,None]
    
    array([[[-1266.  ,   -71.25],
            [ 1266.  ,   -75.25],
            [ 1266.  ,    70.75],
            [-1266.  ,    75.75]],
    
           [[ -305.25,   -50.75],
            [  305.75,   -47.75],
            [  305.75,    50.25],
            [ -306.25,    48.25]],
    
           [[-1441.25,   -72.75],
            [ 1440.75,   -79.75],
            [ 1440.75,    73.25],
            [-1440.25,    79.25]]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      相关资源
      最近更新 更多