Страницы

Поиск по вопросам

четверг, 21 февраля 2019 г.

Округление после четырёх значащих цифр Python

Имеется следующий результат вычислений:
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

Комментариев нет:

Отправить комментарий