Поиск по сайту:

Как подавить использование научных обозначений для небольших чисел с помощью NumPy?


При работе с массивами NumPy вы можете столкнуться с небольшими числами, представленными в экспоненциальном представлении. Хотя такое компактное представление и является преимуществом, расшифровка или сравнение значений может оказаться затруднительным. В этом руководстве рассматриваются четыре различных метода сокращения использования научных обозначений для уменьшительных чисел в массивах NumPy: использование numpy.vectorize наряду с форматированием строк, использование numpy.ndarray.round, использование форматирования строк и использование numpy.set_printoptions. Примеры пояснят эти методологии, обсуждая плюсы и минусы и обеспечивая всестороннее понимание каждого подхода.

Способ 1. Использование numpy.vectorize с форматированием строк

Функция numpy.vectorize в сочетании с форматированием строк может подавлять экспоненциальную запись в массивах NumPy. Этот подход полезен для применения определенного форматирования к каждому элементу, в результате чего получается новый массив форматированных строк.

Синтаксис

formatted_array = numpy.vectorize('{:.Nf}'.format)(array)

Здесь N обозначает сохраняемые десятичные знаки, а '{:.Nf}' представляет синтаксис форматирования строк для чисел с плавающей запятой с N десятичными знаками. Функция numpy.vectorize применяет форматирование строки к каждому элементу.

Пример

В следующем примере мы создаем массив NumPy с уменьшительными цифрами и используем numpy.vectorize со строковым форматированием, чтобы упростить научную запись.

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = np.vectorize('{:.10f}'.format)(array)
print(formatted_array)

Выход

['0.0000000001' '0.0000000002' '0.0000000003']

Преимущества

  • Позволяет использовать специальные приложения форматирования для каждого элемента.

  • Адаптируется к альтернативным требованиям форматирования.

Недостатки

  • Выводит массив строк, непригодный для дальнейших числовых операций.

Способ 2: использование numpy.ndarray.round

Функция numpy.ndarray.round облегчает округление элементов массива NumPy до указанного количества десятичных знаков, эффективно устраняя научные обозначения. Этот метод полезен для сохранения вывода в виде массива NumPy с числовыми значениями.

Синтаксис

rounded_array = array.round(N)

Здесь N представляет собой количество сохраняемых десятичных знаков. Функция round округляет каждый элемент до N десятичных знаков.

Пример

В следующем примере мы создаем массив NumPy с миниатюрными цифрами и используем numpy.ndarray.round для упрощения научной записи.

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
rounded_array = array.round(10)
print(rounded_array)

Выход

[0.0000000001 0.0000000002 0.0000000003]

Преимущества

  • Сохраняет выходные данные в виде массива NumPy с числовыми значениями.

  • Подходит для дальнейших числовых операций.

Недостатки

  • Неадекватно конкретным требованиям к форматированию строк.

3. Использование форматирования строк

Форматирование строк облегчает форматирование каждого элемента массива NumPy, подавляя экспоненциальную запись. Эта методология напоминает использование numpy.vectorize с форматированием строк, но использует понимание списка.

Синтаксис

formatted_array = ['{:.Nf}'.format(x) for x in array]

Здесь N обозначает сохраняемые десятичные знаки, а '{:.Nf}' представляет синтаксис форматирования строк для чисел с плавающей запятой с N десятичными знаками. Понимание списка применяет форматирование строки к каждому элементу.

Пример

В следующем примере мы создаем массив NumPy с уменьшительными цифрами и используем форматирование строк для упрощения научной записи.

import numpy as np

array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = ['{:.10f}'.format(x) for x in array]
print(formatted_array)

Выход

['0.0000000001', '0.0000000002', '0.0000000003']

Преимущества

  • Позволяет использовать специальные приложения форматирования для каждого элемента.

  • Адаптируется к альтернативным требованиям форматирования.

Недостатки

  • Выводит список строк, непригодных для дальнейших числовых операций.

Способ 4: использование numpy.set_printoptions

Функция numpy.set_printoptions упрощает настройку глобальных параметров печати для массивов NumPy, включая упрощение научной записи. Этот подход полезен для изменения поведения печати по умолчанию для всех массивов NumPy в вашем коде.

Синтаксис

np.set_printoptions(suppress=True, precision=N)

Здесь подавление=True отключает экспоненциальное представление, а точность=N задает сохранение десятичных знаков.

Пример

В следующем примере мы создаем массив NumPy с миниатюрными цифрами и используем numpy.set_printoptions для упрощения научной записи.

import numpy as np

np.set_printoptions(suppress=True, precision=10)
array = np.array([1e-10, 2e-10, 3e-10])
print(array)

Выход

[0.0000000001 0.0000000002 0.0000000003]

Преимущества

  • Изменяет поведение печати по умолчанию для всех массивов NumPy в вашем коде.

  • Выходные данные остаются массивом NumPy с числовыми значениями, пригодными для дальнейших числовых операций.

Недостатки

  • Влияет на все массивы NumPy в вашем коде, что потенциально нежелательно в определенных случаях.

  • Может не подойти, если для вывода требуется определенное форматирование строки.

Заключение

В этом руководстве мы рассмотрели, как сократить использование научных обозначений для крошечных цифр в массивах NumPy, используя различные методы. Мы исследовали использование numpy.vectorize с форматированием строк, использование numpy.ndarray.round, форматирование строк и numpy.set_printoptions. Каждый метод предлагает простые и эффективные средства отображения массивов NumPy без экспоненциальных обозначений, в зависимости от ваших конкретных требований и предпочтений.

Понимая преимущества и недостатки каждого метода, вы можете выбрать наиболее подходящий подход для ваших конкретных потребностей.

Статьи по данной тематике: