numpy вычесть два массива: выходные данные - PullRequest
0 голосов
/ 24 сентября 2018

Итак, я хочу вычесть два числовых массива a и b:

a=[[ 1. 0.85979163 0. 0.11766047 0.19353699]
[ 0.8589698 1. 0.24111901 0. 0. ]
[ 0. 0.24554123 1. 0.09234979 0.07125199]
[ 0.31269982 0.22558714 0.29298401 1. 0.475543 ]
[ 0.18880995 0. 0.06580817 0.32276821 1. ]]


b=[[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]]

Когда я использую следующую команду:

y=numpy.subtract(b,a)

Я получаю выходной массив:

y= [[ -2.22044605e-16 1.40208370e-01 1.00000000e+00 8.82339528e-01
8.06463005e-01]
[ 1.41030195e-01 0.00000000e+00 7.58880995e-01 1.00000000e+00
1.00000000e+00]
[ 1.00000000e+00 7.54458767e-01 -2.22044605e-16 9.07650211e-01
9.28748013e-01]
[ 6.87300178e-01 7.74412855e-01 7.07015986e-01 0.00000000e+00
5.24457002e-01]
[ 8.11190053e-01 1.00000000e+00 9.34191829e-01 6.77231787e-01
0.00000000e+00]]

И меня действительно смущает то, как выводятся эти значения.

Когда я попытался устранить неполадки и сделать:

y=b[0,0]-a[0,0]

Я получил у = 0 .., что делаетсмысл, потому что я бы вычитал 1-1.Но вместо этого в выходном массиве я получаю значение -2.22044605e-16.

Есть ли у вас какие-либо идеи относительно того, почему это может происходить и что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 24 сентября 2018

e-16 по существу 0.Обычно вы не можете избежать ошибок в числовой точности при работе с числами с плавающей точкой.Но вы всегда можете уменьшить крошечные значения до 0, если это важно для вас.Обратите внимание, что вы, вероятно, видите 1. при печати a только потому, что numpy не показывает полную точность по умолчанию при печати массива.Попробуйте print(a[0,0]), и вы, вероятно, увидите что-то вроде 1.00000000005.Например, попробуйте напечатать np.array([1.000000001]) и np.array([1.000000001])-1 и np.array([1.000000001])[0] ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...