2016-03-22 3 views
-1

В результате обработки продукта dot в следующих трех случаях для моего конкретного набора сложных массивов NumPy возникают разные результаты, но не для второго набора случайных матриц, которые имеют одинаковые размеры и диапазоны данных.Точечный продукт Numpy не ассоциативен

a.dot(b).dot(c).dot(d) 
a.dot(b.dot(c).dot(d)) 
a.dot(b.dot(c)).dot(d) 

производит

[[ 2.23903250e-08 -1.29444679e-07j]] 
[[ 6.09565057e-07 +2.09702260e-07j]] 
[[ 3.40257465e-07 -1.20382176e-07j]] 

Массивы являются довольно большой, с один, имеющий около 14 Мио. записей. Может ли размер быть проблемой? Если да, то почему numpy не поднимает войну?

+0

Я бы загрузил массивы как '.npz', но файл ~ 200 мб большой – fhchl

ответ

2

До ошибки округления эти результаты идентичны - все они являются нулевыми матрицами. Различия в ошибке округления являются нормальными.

+0

Хорошо, посмотрите на проблему. В области acousitcs 10^-7 иногда не равна нулю. Я не сравнивал эти результаты с величиной значений в массивах. – fhchl

+0

Но почему эти какуляции дают точно такой же результат для случайных массивов того же размера с эквивалентными диапазонами значений? – fhchl

+0

@fhchl: Скорее всего, они этого не делают, и они выглядят так, как будто они делают, потому что ошибка округления намного меньше, чем выходные значения. – user2357112

Смежные вопросы