Я пытаюсь «расширить» массив (создать новый массив с пропорционально большим количеством элементов во всех измерениях).У меня есть массив с известными числами (назовем его X
), и я хочу увеличить его в j
раза (в каждом измерении).
До сих пор я генерировал новый массив нулей с большим количеством элементовзатем я использовал трансляцию для вставки исходных чисел в новый массив (с фиксированными интервалами).
Наконец, я использовал linspace
, чтобы заполнить пробелы, но эта часть на самом деле не имеет прямого отношения к вопросу.
Код, который я использовал (для n = 3):
import numpy as np
new_shape = (np.array(X.shape) - 1 ) * ratio + 1
new_array = np.zeros(shape=new_shape)
new_array[::ratio,::ratio,::ratio] = X
Моя проблема в том, что это не является общим, мне придется изменить третью строку на основе ndim
.Есть ли способ использовать такое вещание для любого количества измерений в моем массиве?
Правка: если быть более точным, третья строка должна быть:
new_array[::ratio,::ratio] = X
if ndim =2 или
new_array[::ratio,::ratio,::ratio,::ratio] = X
, если ndim = 4
и т. Д.и т. д. Я хочу избежать написания кода для каждого случая ndim
ps. Если есть лучший инструмент для выполнения всего процесса (такой как «внутреннее заполнение», о котором я не знаю, я будубудьте счастливы узнать об этом).
Спасибо