Numpy 数组比较

Numpy arrays comparison

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

也许这有帮助:

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])

如果只关心绝对差,可以用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 中轻松使用这些函数。