Как «нарезать» 2D-массив на 3D-массив

У меня есть массив, который выглядит так: test = np.zeros (7110, 514)

Мне нужно «распаковать» первые 90 значений (строк) в первое значение второго измерения, вторые 90 значений (строк) во второе значение второго измерения и т. д., чтобы желаемый результат имел форму:

desired_output = np.zeros(90, 79, 514)

Я пробовал что-то вроде:

a = np.split(test, 90, axis=1)
test1 = np.reshape(a, (79,90, 514))

но это просто утащило меня целиком кролика... Спасибо за любую помощь!

Почему бы вам не привести игрушечный пример, скажем (8,3), и ожидаемый результат?

sentence 28.05.2019 14:56

Ожидаемый результат с (8,3) будет (4,2,3). В основном я хочу разделить 0-ю ось на равные столбцы и сохранить второе измерение.

La Cordillera 28.05.2019 15:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
98
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не знаю, понимаю ли я вопрос, у вас есть 7110 строк по 514 элементов в каждой и вы хотите «сгруппировать» 7110 строк в 90 x 79 строк?

Потому что тогда вы могли бы сделать что-то вроде этого:

>>> np.array(range(24)).reshape((6, 4))
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19],
       [20, 21, 22, 23]])

Это 6 рядов по 4 элемента в каждом.

>>> np.array(range(24)).reshape((6, 4)).reshape(3, 2, 4)
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]],

       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])

Ряды оставляем как есть, но вместо 6 рядов получаем 3х2 ряда.

Итак, код, который вам понадобится, это просто:

desired_output = a.reshape(90, 79, 514)

Другие вопросы по теме