2016-05-25 2 views
2

У меня есть эта матрица:значения Нахождения в матрице из кортежа

matrix = np.array([[3,3,3,3,3,3,3,3,3,3,3,3], 
       [3,2,2,2,2,2,0,0,0,0,0,3], 
       [3,2,2,2,2,0,0,0,0,0,0,3], 
       [3,2,2,2,0,0,0,0,0,0,0,3], 
       [3,2,2,0,0,0,0,0,0,0,0,3], 
       [3,2,0,0,0,0,0,0,0,0,0,3], 
       [3,0,0,0,0,0,0,0,0,0,1,3], 
       [3,0,0,0,0,0,0,0,0,1,1,3], 
       [3,0,0,0,0,0,0,0,1,1,1,3], 
       [3,0,0,0,0,0,0,1,1,1,1,3], 
       [3,0,0,0,0,0,1,1,1,1,1,3], 
       [3,3,3,3,3,3,3,3,3,3,3,3]]) 

и список списков, наполненный кортежи, как эти:

[[(10, 6), (10, 5), (10, 7), (9, 6), (9, 5), (9, 7)], [(9, 7), (9, 6), (9, 8), (8, 7), (8, 6), (8, 8), (10, 7), (10, 6), (10, 8)], [(10, 7), (10, 6), (10, 8), (9, 7), (9, 6), (9, 8)], [(8, 8), (8, 7), (8, 9), (7, 8), (7, 7), (7, 9), (9, 8), (9, 7), (9, 9)], [(9, 8), (9, 7), (9, 9), (8, 8), (8, 7), (8, 9), (10, 8), (10, 7), (10, 9)], [(10, 8), (10, 7), (10, 9), (9, 8), (9, 7), (9, 9)], [(7, 9), (7, 8), (7, 10), (6, 9), (6, 8), (6, 10), (8, 9), (8, 8), (8, 10)], [(8, 9), (8, 8), (8, 10), (7, 9), (7, 8), (7, 10), (9, 9), (9, 8), (9, 10)], [(9, 9), (9, 8), (9, 10), (8, 9), (8, 8), (8, 10), (10, 9), (10, 8), (10, 10)], [(10, 9), (10, 8), (10, 10), (9, 9), (9, 8), (9, 10)], [(6, 10), (6, 9), (5, 10), (5, 9), (7, 10), (7, 9)], [(7, 10), (7, 9), (6, 10), (6, 9), (8, 10), (8, 9)], [(8, 10), (8, 9), (7, 10), (7, 9), (9, 10), (9, 9)], [(9, 10), (9, 9), (8, 10), (8, 9), (10, 10), (10, 9)], [(10, 10), (10, 9), (9, 10), (9, 9)]] 

которые число я ищу и его соседние пространства, которые не являются < 10 в y или x, и я использую функцию, чтобы классифицировать их между пробелами, заполненными 0 или любым другим, и добавить их в список. Как исправить эту функцию, которая делает классификацию?

def classify(neighbors,matrix): 
    for x in neighbors: 
     y = x[0] 
     z = x[1] 
     if matrix[y][z] == 0: 
      step.append(x) 
     else: 
      hop.append(x) 

print(hop,step) 
+0

Я не понимаю, что вы ищете (особенно строке 'которые номер я ищу и соседние пространства .. .'). Каков ожидаемый результат? – bozdoz

+0

Список кортежей - это пространство и его соседние пространства. Я хочу классифицировать, заняты ли соседние пространства IN MATRIX 0 или другим значением и добавят кортеж в список в соответствии с его классификацией –

+0

Что вы сейчас получаете как результат, и какой результат, точно, вы ожидаете? – bozdoz

ответ

1
import numpy as np 
from array import * 
matrix = np.array([[3,3,3,3,3,3,3,3,3,3,3,3], 
       [3,2,2,2,2,2,0,0,0,0,0,3], 
       [3,2,2,2,2,0,0,0,0,0,0,3], 
       [3,2,2,2,0,0,0,0,0,0,0,3], 
       [3,2,2,0,0,0,0,0,0,0,0,3], 
       [3,2,0,0,0,0,0,0,0,0,0,3], 
       [3,0,0,0,0,0,0,0,0,0,1,3], 
       [3,0,0,0,0,0,0,0,0,1,1,3], 
       [3,0,0,0,0,0,0,0,1,1,1,3], 
       [3,11,11,0,0,0,0,1,1,1,1,3], 
       [3,12,12,0,0,0,1,1,1,1,1,3], 
       [3,3,13,3,3,3,3,3,3,3,3,3]]) 

neighbors = [[(10, 6), (10, 5), (10, 7), (9, 6), (9, 5), (9, 7)],(10, 5),[(9, 7), (9, 6), (9, 8), (8, 7), (8, 6), (8, 8), (10, 7), (10, 6), (10, 8)]] 
def classify(neighbors,matrix): 
    hop = [] 
    step = [] 
    for x in neighbors: 
     print x 
     if isinstance(x,list): 
     for x1 in x: 
      y = x1[0] 
      z = x1[1] 
      if matrix[y][z] == 0: 
      step.append(x1) 
      else: 
      hop.append(x1) 
     else: 
     y = x[0] 
     z = x[1] 
     if matrix[y][z] == 0: 
      step.append(x) 
     else: 
      hop.append(x) 

    print "neighbors which are not having value as zero =" ,hop 
    print "neighbors which are having zero value =" ,step 
classify(neighbors,matrix) 

ВЫВОД: -

neighbors which are not having value as zero = [(10, 6), (10, 7), (9, 7), (9, 7), (9, 8), (8, 8), (10, 7), (10, 6), (10, 8)] 
neighbors which are having zero value = [(10, 5), (9, 6), (9, 5), (10, 5), (9, 6), (8, 7), (8, 6)] 
Смежные вопросы