Python-код для создания массива массивов (8x8, каждый из которых 3x3) - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь создать массив массивов со структурой 8x8, где каждая ячейка в этом массиве 3x3. То, что я создал, работает, но когда я хочу изменить определенное значение, мне нужно получить к нему доступ не так, как я ожидал.

import numpy as np
a = np.zeros((3,3))
b = np.array([[0,1,0],[1,1,1],[0,1,0]])
d = np.array([[b,a,b,a,b,a,b,a]])
e = np.array([[a,b,a,b,a,b,a,b]])
g = np.array([[d],[e],[d],[e],[d],[e],[d],[e]])

#Needed to change a specific cell 
#g[0][0][0][0][0][0] = x : [Row-x][0][0][Cell-x][row-x][cell-x]
#Not sure why I have to have the 2 0's between the Row-x and the Cell-x identifiers

После этого мне нужно сопоставить каждое значение с сеткой 24x24, где цвета 1 отличаются от значений 0. Если бы кто-нибудь мог предоставить направление для достижения этого, это было бы оценено. Не ищет конкретный код, но базу, чтобы понять, как это можно сделать.

Спасибо

1 Ответ

1 голос
/ 23 октября 2019
In [291]: a = np.zeros((3,3)) 
     ...: b = np.array([[0,1,0],[1,1,1],[0,1,0]]) 
     ...: d = np.array([[b,a,b,a,b,a,b,a]]) 
     ...: e = np.array([[a,b,a,b,a,b,a,b]]) 
     ...: g = np.array([[d],[e],[d],[e],[d],[e],[d],[e]])                       

In [292]: a.shape                                                               
Out[292]: (3, 3)
In [293]: b.shape                                                               
Out[293]: (3, 3)

d равно 4d - считайте скобки: [[....]]:

In [294]: d.shape                                                               
Out[294]: (1, 8, 3, 3)
In [295]: e.shape                                                               
Out[295]: (1, 8, 3, 3)

g - это (8,1) из 4 тусклых элементов, всего 6посчитать скобки:

In [296]: g.shape                                                               
Out[296]: (8, 1, 1, 8, 3, 3)

Доступ к 2-мерному подмассиву, в данном случае равный b:

In [298]: g[0,0,0,0,:,:]                                                        
Out[298]: 
array([[0., 1., 0.],
       [1., 1., 1.],
       [0., 1., 0.]])

Повторить, без лишних скобок:

In [299]: a = np.zeros((3,3)) 
     ...: b = np.array([[0,1,0],[1,1,1],[0,1,0]]) 
     ...: d = np.array([b,a,b,a,b,a,b,a]) 
     ...: e = np.array([a,b,a,b,a,b,a,b]) 
     ...: g = np.array([d,e,d,e,d,e,d,e])                                       
In [300]: d.shape                                                               
Out[300]: (8, 3, 3)
In [301]: g.shape                                                               
Out[301]: (8, 8, 3, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...