ogregor
@ogregor
арендатор vpn сервера debian

Как 3х мерную матрицу (numpy.ndarray) привести к 2х мерной?

Здравствуйте, есть 3х мерная матрица, надо ее привести к двухмерной, таким образом чтобы элементы 1 уровня добавились в конец элементов 2 уровня, и тем самым 2 уровень стал первым.

Есть матрица
x,y,z = 2,4,8
a=np.arange(x*y*z).reshape(2,4,8)


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],
[24, 25, 26, 27, 28, 29, 30, 31]],

[[32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47],
[48, 49, 50, 51, 52, 53, 54, 55],
[56, 57, 58, 59, 60, 61, 62, 63]]])

Как получить

array([[ 0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39],
[ 8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47],
[16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55],
[24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63]]
  • Вопрос задан
  • 334 просмотра
Решения вопроса 1
@Andy_U
coding=utf-8

import numpy as np

x, y, z = 2, 4, 8
a = np.arange(x * y * z).reshape(x, y, z)

b = np.concatenate([a[i] for i in range(a.shape[0])], axis=1)   # <- solution

c = np.array([[0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39],
              [8, 9, 10, 11, 12, 13, 14, 15, 40, 41, 42, 43, 44, 45, 46, 47],
              [16, 17, 18, 19, 20, 21, 22, 23, 48, 49, 50, 51, 52, 53, 54, 55],
              [24, 25, 26, 27, 28, 29, 30, 31, 56, 57, 58, 59, 60, 61, 62, 63]])

print('\n', a)
print('\n', b)
print('\n', c)
print('\n', np.array_equal(b, c))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы