Numpy - Как векторизовать несколько матриц преобразования - PullRequest
0 голосов
/ 29 января 2019

У меня есть массив матриц преобразования для преобразования трехмерных точек.У меня около 62 [4x4] матриц в основном.

Эквивалентно, у меня есть 1 [4x1] 3D-точек.

Хорошо, теперь я прорабатываю каждое преобразование и применяю соответствующую матрицу преобразования ктот самый момент.Есть ли способ, которым я могу использовать тензорное представление Numpy, чтобы сделать это более чисто?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете сделать что-то вроде этого

import numpy as np


transf = np.random.randint(1,9,(62,4,4))
points = np.random.randint(0,9,(4,62))

res = np.dot(transf,points)

print(res.shape)
print(res[0][:,0],np.dot(transf[0],points[:,0]))

# (62, 4, 62) -> (numb_transformation, point_coord, numb_of_points)
# [35 13 39 29] [35 13 39 29]

Я взял первую точку, чтобы показать, что результат тот же.

Это в основном берет каждую матрицу вдоль оси 0 'transf 'и примените его к массиву' точек, где каждый столбец является точкой, чтобы вы имели форму (4, n_points)

Результатом будет массив, в котором первая ось является результатом примененияиз n-й матрицы вторая ось является координатой точки, а третья ось является номером точки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...