【问题标题】:Numpy arrays comparisonNumpy 数组比较
【发布时间】:2021-12-20 23:15:06
【问题描述】:

我有 40 个元素的 2 个 pytorch 张量(单列)为了逐个元素地比较它们,我将它们转换为单列 40 个元素的 numpy 数组。我想逐个元素地比较两个数组,如果一个数组中的值大于 0.5,则将其设为 1,否则设为 0,并将结果再次转换为 pytorch 张量。我该怎么做。

【问题讨论】:

  • 你能给我们举一个你试过的代码的例子吗?

标签: python pytorch


【解决方案1】:

如果只关心绝对差异,可以使用torch.iscloseatol=0.5

>>> A = torch.arange(10).float()
>>> B = A + torch.randn_like(A) # Add some Gaussian noise to `A`
>>> A
tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
>>> B
tensor([0.3109, 1.6514, 1.7576, 3.2930, 2.7340, 5.5602, 6.9321, 6.4786, 6.7976,
        9.2342])
>>> torch.isclose(A, B, atol=0.5)
tensor([ True, False,  True,  True, False, False, False, False, False,  True])

如果您需要非对称检查,请使用正常的减法检查:

>>> (B - A) > 0.5
tensor([False,  True, False, False, False,  True,  True, False, False, False])

您也可以在 numpy 中轻松使用这些函数。

【讨论】:

    【解决方案2】:

    也许这会有所帮助:

    import numpy as np
    a = np.array([1, 2, 3, 4, 5])
    b = np.array([1.1, 2.6, 3.3, 4.6, 5.5])
    (np.abs(a-b)>0.5).astype(int)
    >>> array([0, 1, 0, 1, 0])
    

    【讨论】:

    • 谢谢。现在我只想逐个元素地比较两个 numpy 数组,如果值相同,则增加计数器,而不是不同时。最后告诉有多少是正确的匹配。感谢您的建议..
    • 如果您有两个 numpy 数组,您也可以使用 np.sum(a == b)(a == b).sum() 其中 ab 是您的两个 numpy 数组。
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2016-03-29
    • 1970-01-01
    相关资源
    最近更新 更多