Как напечатать (визуализировать) массив N-Numy в виде 2-мерной матрицы? - PullRequest
0 голосов
/ 26 октября 2019

У меня есть массив nndy, который эмулирует 2d матрицу, в которой каждый элемент является вектором столбца. Мне нужно напечатать массив 2d как матрицу.

Вот код, который создает массив:

Lx = 4
Ly = 4
f = 3
q = 10
pop = np.random.randint(q, size = (Lx, Ly, 1, f))

И массив выглядит так:

[[[[3 3 6]]

[[5 2 2]]

[[6 0 2]]

[[5 8 8]]]

[[[7 8 2]] ...

Мне нужно как-то это увидеть:

print(pop[0,0][0], pop[0,1][0], pop[0,2][0], pop[0,3][0])
print(pop[1,0][0], pop[1,1][0], pop[1,2][0], pop[1,3][0])
print(pop[2,0][0], pop[2,1][0], pop[2,2][0], pop[2,3][0])
print(pop[3,0][0], pop[3,1][0], pop[3,2][0], pop[3,3][0])

[2 9 2] [5 5 8][4 9 3] [4 2 3]

[3 9 0] [6 4 0] [8 3 9] [6 4 1]

[4 8 9] [2 26] [1 3 8] [4 5 6]

[4 1 5] [8 0 9] [3 9 7] [4 4 3]

Я не могу использоватьметод печати примера, потому что массив может быть намного больше. В идеале было бы удивительно визуализировать это, как показано на рисунке в этом примере:

Визуализировать 1D-массив numpy как 2D-массив с помощью matplotlib

Спасибо за все советы!

1 Ответ

1 голос
/ 26 октября 2019

Вложенные четыре цикла с удаленным размером пусто :

In [46]: z = pop.reshape(tuple(d for d in pop.shape if d > 1))

In [47]: z.shape
Out[47]: (4, 4, 3)

In [48]: for x in z:
    ...:     for y in x:
    ...:         print(y, end=' ')
    ...:     print()
    ...:     
[4 0 3] [0 5 6] [7 4 2] [9 2 6] 
[8 3 1] [0 8 8] [5 7 9] [3 1 5] 
[4 9 9] [4 8 5] [0 8 7] [8 9 7] 
[8 7 4] [4 7 5] [1 8 5] [4 3 0] 

Или (с использованием того же z):

In [55]: n = z.shape[1]

In [56]: fmt = '{} ' * n

In [57]: for x in z:
    ...:     print(fmt.format(*x))
    ...:     
[4 0 3] [0 5 6] [7 4 2] [9 2 6] 
[8 3 1] [0 8 8] [5 7 9] [3 1 5] 
[4 9 9] [4 8 5] [0 8 7] [8 9 7] 
[8 7 4] [4 7 5] [1 8 5] [4 3 0] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...