np.around() отображает округленные цифры

#python #numpy #printing #rounding

Вопрос:

В настоящее время я пишу код для выполнения модального анализа крутильных колебаний. У меня уже есть версия этого программного обеспечения во временной области для сравнения результатов. Я знаю, что об этом спросят, поэтому анализ во временной области нелегко включить сложнозначное структурное демпфирование. Это очень легко сделать в мышлении модального анализа. Мой код работает и выдает результат правильной формы, то есть он колеблется столько же раз за цикл, сколько анализируются доминирующие частоты, но он не выдает результат с правильным масштабом. Я предполагаю, что где-то на этом этапе я допустил ошибку преобразования единиц измерения. То, что я сейчас делаю, — это проверяю, что разные способы вычисления одних и тех же величин дают одни и те же результаты. Это довольно легко сделать при визуальном осмотре.

По какой-то причине np.around() будет работать так, как должно, некоторое время, но не все время. Ниже вы можете видеть, что обе инструкции печати используют почти одинаковое форматирование, но они дают совершенно разные результаты. «Развивающаяся модель» выводит округленные числа без конечных нулей. С другой стороны, «Собственные частоты» выводят конечные нули с точностью до 5 знаков после запятой.

Я подумал, что, возможно, проблема в np.sqrt (), но вы также можете видеть ниже, что аналогичный вывод не обеспечивает конечные нули после округления. Я также пытался использовать np.asarray() и np.asmatrix (), чтобы просто вычеркнуть их из списка возможных виновников. Я предполагаю, что в фоновом режиме происходит какое-то преобразование данных, которое я не вижу и о котором не знаю, что заставляет np.around() делать это.

Затем я попытался подавить глупое использование научной нотации. Это исправило некоторые выходные данные инструкций печати, но не все из них.

Любая помощь была бы полезна…

Разработка модельного кода snip-it

Разработка модели вывода snip-it

Снип-это код собственных частот

Выход собственных частот snip-it

np.sqrt() рассмотрение

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

1. Похоже, что np.around это работает так, как задумывалось; в обоих случаях значения округляются до указанного числа десятичных знаков. Ваши ценности верны. Вы видите различия из-за форматирования выходных print данных . Я предлагаю взглянуть на np.set_printoptions , если вы хотите добиться согласованности в печатной продукции.

2. (Посмотрев на это немного дальше, кажется, что np.set_printoptions не работает для скаляров Numpy (которые используются здесь из-за мнимой составляющей чисел), но, как я сказал выше, расхождение, которое вы видите здесь, заключается только в том, как отображаются значения print .

3. Финли Гибсон. Я согласен с первым комментарием, но никогда не рассматривал скаляры numpy. Я скажу вам, что, когда я подавил научную нотацию, большинство напечатанных значений выглядели так, как мне нужно, и я смог визуально проверить данные. Сделав это, я обнаружил, что один из способов вычисления значений имел небольшую ошибку неизвестного значения. Спасибо.