Я пытаюсь вращать, переводить и масштабировать n-мерный массив Python, как это определено в wikipedia .
Однако, scipy ndimage среди многих других подобных пакетов, которые япопытался использовать только работу, где ввод подобен изображению (в равномерно распределенной сетке) и 2 измерения.Это означало, что при повороте на очень конкретные углы результат будет таким же, как и у другого подобного угла, например, 10 или 10,1 градуса, поскольку он работает только в пикселях.Я полагаю, что могу кодировать как масштабирование, так и перевод, возможно, не очень эффективно, но я не знаю, как приблизиться к n-мерным поворотам.
Я открыт либо для формата массива ниже, либо для каждого'координата', имеющая свой собственный массив, где каждый элемент представляет собой отдельное измерение или что-то еще, что действительно сделает эту работу.
Например, входной массив может выглядеть как [[1,2,3], [1,2,3]]
, который является 2-мерным, и преобразованиемтаких ...
- вращение на 90 градусов по часовой стрелке, центр [2,2]
- перевод
[0, 1]
(0 изменений в первом измерении и 1 увеличение всех значенийво-вторых) - масштабирование 2x, центр
[2,2]
приведет к [[1,2,3], [3,2,1]]
от поворота, затем [[1,2,3], [4,3,2]]
от смещения и, наконец, [[0,2,4], [6,4,2]]
от смазывания.
Вышесказанное возможно при смешивании других онлайн-решений 2d, но когда речь идет, например, о 23-мерном вводе с тысячами «координат», я не знаю, с чего начать, не говоря уже о том, какреализовать это эффективным способом.Я надеялся на что-то вроде 10 измерений и 1000 элементов в сотых долях секунды, с CUDA своего рода соображением, но я жду, чтобы сказать, что это невозможно.Спасибо за любую помощь или предложения заранее - скорость является приоритетом, и, надеюсь, любая точность не принесется в жертву.