Как в NumPy правильно структурировать массив для хранения набора XYZ-координат?

«Как в NumPy правильно структурировать массив для хранения набора XYZ-координат?» — вопрос из категории Библиотеки и модули, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для представления набора XYZ-координат в NumPy рекомендуется использовать двумерный массив (матрицу) формы (N, 3), где N — количество точек.

Такая структура интуитивно понятна: каждая строка представляет собой одну точку, а столбцы соответствуют координатам X, Y и Z.

Пример создания и доступа:

import numpy as np

# Создание массива для 4 точек в 3D-пространстве
points = np.array([
    [1.0, 2.0, 3.0],  # Точка 0
    [4.0, 5.0, 6.0],  # Точка 1
    [7.0, 8.0, 9.0],  # Точка 2
    [0.5, 1.5, 2.5]   # Точка 3
])

# Проверка формы массива
print(f"Форма массива: {points.shape}")  # (4, 3)

# Получение координат первой точки (индекс 0)
first_point = points[0]
print(f"Первая точка: {first_point}")  # [1. 2. 3.]

# Получение всех X-координат
x_coords = points[:, 0]
print(f"Все X-координаты: {x_coords}") # [1.  4.  7.  0.5]

Почему этот подход является стандартом:

  • Эффективность: Позволяет выполнять быстрые векторизованные операции над всеми точками одновременно (например, сдвиг, масштабирование).
  • Совместимость: Является стандартным форматом для большинства библиотек научной визуализации и машинного обучения, таких как Matplotlib, SciPy, Scikit-learn и Open3D.
  • Читаемость: Структура (N, 3) явно отражает суть данных — N объектов с 3 признаками у каждого.