Как подавить использование научных обозначений для небольших чисел с помощью 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 без экспоненциальных обозначений, в зависимости от ваших конкретных требований и предпочтений.
Понимая преимущества и недостатки каждого метода, вы можете выбрать наиболее подходящий подход для ваших конкретных потребностей.