Преобразование 2D массива float в int с NumPy: методы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы быстро преобразовать двумерный массив вещественных чисел в массив целых чисел с использованием NumPy, используйте метод astype(int). Для иллюстрации рассмотрим следующий пример:

Python
Скопировать код
import numpy as np

float_array = np.array([[1\.7, 2.5], [3\.1, 4.8]])
int_array = float_array.astype(int)  # Обрезаем дробную часть

Результатом выполнения данного кода будет массив [[1 2] [3 4]] – десятичные дроби исчезли, обрезка прошла без округления.

Кинга Идем в IT: пошаговый план для смены профессии

Управление процессом преобразования и округления

Если вы хотите контролировать процесс преобразования, существуют дополнительные методы округления: np.rint, np.floor, np.ceil, np.trunc. Эти функции позволяют выбрать желаемый метод округления до преобразования типа.

Python
Скопировать код
# Округляем до ближайшего целого и затем выполняем преобразование
rounded_array = np.rint(float_array).astype(int)

Такой подход позволяет точно контролировать механизм округления. Благодаря этому, вы можете управлять каждым шагом преобразования!

Производительность и сохранение структуры

При преобразовании типов важно обязательно сохранять размерность и структуру массива, это касается корректной обработки данных. Использование astype гарантирует выполнение этих условий и оптимизирует процесс по производительности. Если вы хотите преобразовать уже существующий массив NumPy, можно вызвать astype(copy=False) и тем самым избежать ненужного копирования.

Python
Скопировать код
int_array = float_array.astype(int, copy=False)  # Сэкономим время и ресурсы

Этот подход обеспечивает высокую эффективность обработки данных, что особенно важно при работе с большими объемами данных.

Визуализация

Представим исходный двумерный массив вещественных чисел в виде капель воды (💧), где каждая обладает своим уникальным объемом:

Markdown
Скопировать код
Двумерный массив вещественных чисел (💧): [[1\.9, 2.5], [3\.1, 4.7]]

Применив к нему метод .astype() из NumPy, мы преобразуем капли (💧) в круглые шарики (🔵), которые символизируют целые числа:

Python
Скопировать код
int_array = float_array.astype(int)

И получим в итоге:

Markdown
Скопировать код
Двумерный массив целых чисел (🔵): [[1, 2], [3, 4]]
# Каждая капля (💧) преобразовалась в шарик (🔵). Теперь у нас только целые числа!

Таким образом, каждое вещественное число переходит в стадию наиближайшего меньшего целого числа.

Альтернативные варианты

Есть и другие способы реализовать преобразование типов кроме astype, например, np.asarray с параметром dtype=int — менее известный, но вполне эффективный метод преобразования.

Python
Скопировать код
int_array = np.asarray(float_array, dtype=int)

Этот метод отлично подойдет, если ваши данные не являются массивами NumPy; он позволяет выполнять преобразование и изменение типа данных одновременно.

Особые случаи: Нюансы преобразования

Следует учесть, что при переводе вещественных чисел в целые возможна потеря точности — десятые доли исчезнут навсегда. Все числа, в особенности отрицательные, следует преобразовывать с особой осторожностью.

Python
Скопировать код
negative_floats = np.array([[-1.7, -2.5], [-3.1, -4.8]])
int_array = np.floor(negative_floats).astype(int)  # С отрицательными числами все по-другому

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

Полезные материалы

  1. numpy.ndarray.astype — NumPy v1.26официальная документация по методу astype.
  2. Типы данных NumPyподробное руководство по типам данных в NumPy и способам их преобразования.
  3. Python NumPy Tutorial | Операции с массивами NumPy на примерах | Edurekaобширный учебник по NumPy, охватывающий различные операции.
  4. Эффективное программирование массивов с NumPy — Real Pythonпрактическое руководство по работе с массивами NumPy без использования циклов.
  5. Типы данных — Руководство NumPy v1.26 — детальное объяснение типов данных и приведения типов в NumPy.
  6. Преобразование типов массивов NumPy | DigitalOceanруководство с примерами преобразования типов массивов NumPy.