Я стараюсь, чтобы сравнить результаты некоторых numpy.array
расчетов с ожидаемыми результатами, и я постоянно получать ложные сравнения, но напечатанные массивы выглядят одинаково, например:Почему это сравнение массивов numpy не удается?
def test_gen_sine():
A, f, phi, fs, t = 1.0, 10.0, 1.0, 50.0, 0.1
expected = array([0.54030231, -0.63332387, -0.93171798, 0.05749049, 0.96724906])
result = gen_sine(A, f, phi, fs, t)
npt.assert_array_equal(expected, result)
печатает назад:
> raise AssertionError(msg)
E AssertionError:
E Arrays are not equal
E
E (mismatch 100.0%)
E x: array([ 0.540302, -0.633324, -0.931718, 0.05749 , 0.967249])
E y: array([ 0.540302, -0.633324, -0.931718, 0.05749 , 0.967249])
Моя функция gen_sine:
def gen_sine(A, f, phi, fs, t):
sampling_period = 1/fs
num_samples = fs * t
samples_range = (np.arange(0, num_samples) * 2 * f * np.pi * sampling_period) + phi
return A * np.cos(samples_range)
Почему это? Как сравнить два массива? (Я использую numpy 1.9.3 и pytest 2.8.1)
Основная функция 'numpy' для сравнения поплавков -' np.allclose'. – hpaulj