mmcore doc 0.1 Help

Vectorization

Геометрические операции в mmcore могут быть представлены в неизменном, а также векторизированом виде.

Отличия векторизированых функций

Отличия векторизированых функций лучше всего рассматривать на примере.

import numpy as np from mmcore.geom.aabb import aabb, aabb_vectorized

1D example

Создадим массив из 10 3D случайных точек

>>> points=np.random.random((10,3)) >>> points.shape (10, 3)

Вычислим AABB для этого массива.

>>> res = aabb(points) >>> res.shape (2, 3) >>> res array([[0.03442901, 0.05956184, 0.00195626], [0.73280618, 0.96770464, 0.90464465]]) >>> res = aabb_vectorized(points) >>> res.shape (2, 3) >>> res array([[0.03442901, 0.05956184, 0.00195626], [0.73280618, 0.96770464, 0.90464465]])

Размеры, а также порядок элементов идентичны для обоих массивов. Это ожидаемо, так-как для AABB скалярным аргументом является плоский массив точек.

ND example

Рассмотрим пример с большей размерности.

Передадим на входы массивы c ndim равным 3 и 5.

shp=(7, 10, 3) points=np.random.random(shp) res=aabb(points) res.shape (2, 7, 3) shp=(5, 6, 7, 10, 3) points=np.random.random(shp) aabb(points).shape (2, 5, 6, 7, 3) #Первое измерение возвращаемого объекта стало первым для массива
shp=(7, 10, 3) points=np.random.random(shp) aabb_vectorized(points) res.shape (7, 2, 3) shp=(5, 6, 7, 10, 3) points=np.random.random(shp) aabb_vectorized(points).shape (5, 6, 7, 2, 3) # Порядок как и на входе

Summary

Signatures

  • groups - items in n-kind groups group 0, group 1, ... group n, group n+1

  • points - count of points in last group

  • xyz - point coordinates

  • min-max - min and max AABB value per dimention

Сигнатуры "скалярных" объектов а также наборов данных на вход выход:

input

output

object

points, xyz

min-max, xyz

data

groups..., points, xyz

?

Общая сигнатурв входа и выходы для обоих случаев:

first

second

last

input

groups

points

xyz

not vec

min-max

groups

xyz

vec

groups

min-max

xyz

Implementation

Векторизация выполняется с использованием numpy.vectorize или ее оберткой vectorize из модуля mmcore.func которая предоставляет ряд дополнительных удобств.

Last modified: 25 March 2024