def test_entropy_positive(self): # See ticket SciPy's gh-497 pk = cupy.asarray([0.5, 0.2, 0.3]) qk = cupy.asarray([0.1, 0.25, 0.65]) eself = stats.entropy(pk, pk) edouble = stats.entropy(pk, qk) assert 0.0 == eself assert edouble >= 0.0
def test_entropy_2d_zero(self): pk = cupy.asarray([[0.1, 0.2], [0.6, 0.3], [0.3, 0.5]]) qk = cupy.asarray([[0.0, 0.1], [0.3, 0.6], [0.5, 0.3]]) testing.assert_array_almost_equal(stats.entropy(pk, qk), [cupy.inf, 0.18609809]) pk[0][0] = 0.0 testing.assert_array_almost_equal(stats.entropy(pk, qk), [0.17403988, 0.18609809])
def test_entropy_base(self): pk = cupy.ones(16, float) s = stats.entropy(pk, base=2.0) assert abs(s - 4.0) < 1.0e-5 qk = cupy.ones(16, float) qk[:8] = 2.0 s = stats.entropy(pk, qk) s2 = stats.entropy(pk, qk, base=2.0) assert abs(s / s2 - math.log(2.0)) < 1.0e-5
def test_entropy_2d_nondefault_axis(self): pk = cupy.asarray([[0.1, 0.2], [0.6, 0.3], [0.3, 0.5]]) qk = cupy.asarray([[0.2, 0.1], [0.3, 0.6], [0.5, 0.3]]) testing.assert_array_almost_equal( stats.entropy(pk, qk, axis=1), cupy.asarray([0.231049, 0.231049, 0.127706]), )
def test_entropy_raises_value_error(self): pk = cupy.asarray([[0.1, 0.2], [0.6, 0.3], [0.3, 0.5]]) qk = cupy.asarray([[0.1, 0.2], [0.6, 0.3]]) with pytest.raises(ValueError): stats.entropy(pk, qk)
def test_entropy_base_2d_nondefault_axis(self): pk = cupy.asarray([[0.1, 0.2], [0.6, 0.3], [0.3, 0.5]]) testing.assert_array_almost_equal( stats.entropy(pk, axis=1), cupy.asarray([0.63651417, 0.63651417, 0.66156324]), )
def test_entropy_2d(self): pk = cupy.asarray([[0.1, 0.2], [0.6, 0.3], [0.3, 0.5]]) qk = cupy.asarray([[0.2, 0.1], [0.3, 0.6], [0.5, 0.3]]) testing.assert_array_almost_equal( stats.entropy(pk, qk), [0.1933259, 0.18609809] )
def test_entropy_zero(self): # Test for SciPy PR-479 s = stats.entropy(cupy.asarray([0, 1, 2])) expected = 0.63651416829481278 assert abs(float(s) - expected) < 1e-12