Выполнение преобразований на n-мерных массивах в python - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь вращать, переводить и масштабировать n-мерный массив Python, как это определено в wikipedia .

Однако, scipy ndimage среди многих других подобных пакетов, которые япопытался использовать только работу, где ввод подобен изображению (в равномерно распределенной сетке) и 2 измерения.Это означало, что при повороте на очень конкретные углы результат будет таким же, как и у другого подобного угла, например, 10 или 10,1 градуса, поскольку он работает только в пикселях.Я полагаю, что могу кодировать как масштабирование, так и перевод, возможно, не очень эффективно, но я не знаю, как приблизиться к n-мерным поворотам.

Я открыт либо для формата массива ниже, либо для каждого'координата', имеющая свой собственный массив, где каждый элемент представляет собой отдельное измерение или что-то еще, что действительно сделает эту работу.

Например, входной массив может выглядеть как [[1,2,3], [1,2,3]], который является 2-мерным, и преобразованиемтаких ...

  1. вращение на 90 градусов по часовой стрелке, центр [2,2]
  2. перевод [0, 1] (0 изменений в первом измерении и 1 увеличение всех значенийво-вторых)
  3. масштабирование 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 своего рода соображением, но я жду, чтобы сказать, что это невозможно.Спасибо за любую помощь или предложения заранее - скорость является приоритетом, и, надеюсь, любая точность не принесется в жертву.

...