Имеется следующий результат вычислений:
1.103567 -0.015367 0.000616
-0.023323 1.138369 -0.018582
-0.003442 0.004548 1.195153
Устройство преобразует эти числа следующим образом:
[1.104, -0.01537, 0.000616,
-0.02332, 1.138, -0.01858,
-0.003442, 0.004548, 1.195]
Для дальнейшей работы необходимо сравнивать вычисления и числа внутри устройства, поэтому возникла потребность в округлении результатов вычислений так же, как это делается на устройстве. Round не даёт удовлетворительного результата.
где m это DataFrame.
Ответ
Товарищ в комментариях подсказал еще один хороший способ, который при больших массивах данных гораздо более предпочтителен:
Итак, у нас имеется результат вычислений m и данные с устройства newmatrix. Их необходимо сравнить.
import numpy as np
import pandas as pd
m
0 1 2
0 1.099394 -0.015754 0.006890
1 -0.025979 1.119590 -0.002269
2 -0.021262 0.005393 1.191073
type(m)
newmatrix
[1.099, -0.01575, 0.00689, -0.02598, 1.12, -0.002269, -0.02126, 0.005393, 1.191]
type(newmatrix)
Приводим newmatrix к формату DataFrame
mat=np.array(newmatrix)
mat=mat.reshape((3,3))
mat=pd.DataFrame(mat)
mat
0 1 2
0 1.09900 -0.015750 0.006890
1 -0.02598 1.120000 -0.002269
2 -0.02126 0.005393 1.191000
И затем одной функцией производим сравнение:
numpy.allclose(m, mat, 1e-3,0)
True
Комментариев нет:
Отправить комментарий