Python и Numpy — преобразуют массив размером 10×10, где каждая ячейка размером 20×20, в массив размером 10x10x20x20

#python #numpy #tensorly

#python #numpy #тензорно

Вопрос:

У меня странная проблема, когда у меня есть файл .mat, который поставляется в виде массива размером 10×10, где каждый индекс представляет собой массив размером 20×20, представляющий серое изображение. Итак, у меня есть 10 испытаний, и каждое испытание представляет собой временной ряд с 10 интервалами, и каждый интервал отслеживается как изображение размером 20×20. Чтобы запустить тензорную регрессию для этого, используя тензорно, это должно быть отформатировано как тензор (следы, временные ряды, x-dim, y-dim). Есть ли чистый способ сделать это? Я попробовал np.reshape в файле mat, но это не сработает, потому что размеры файла mat равны 10×10, потому что, как я уже сказал, каждая ячейка массива равна 20×20.

Так, например, предположим, что файл mat имеет имя переменной ‘mat_var.’ Тогда mat_var [0,0] будет массивом 20×20, а mat_var — массивом 10×10

Цель состоит в том, чтобы преобразовать массив размером 10×10, где каждый индекс представляет собой массив размером 20×20, в массив размером 10x10x20x20.

Комментарии:

1. Можете ли вы привести пример того, как выглядят ваши данные? Из вашего описания это не совсем понятно.

2. Я подозреваю mat , что переменная представляет собой ячейку matlab и массив dtype объекта numpy. Изменение формы не может изменить общее количество элементов, равное 100,

Ответ №1:

так очевидно, что если вы выполняете tensor = np.full((10,10,20,20),0), то вы можете соответствующим образом настроить каждую ячейку, например

тензор [x, y] = мат [x, y]

и он просто заполнит 20×20, если размер массива также равен 20×20