2016-01-19 6 views
0

Я пытаюсь напечатать комбинацию значений np.array, строки и некоторых значений, которые я получаю от итератора.Печать списка-матричная комбинация

код выглядит следующим образом:

import numpy as np 

site = np.genfromtxt('.....\Plot_1.txt', dtype=None, delimiter='\t') 
c1 = np.array([148, 108]) 
c2 = np.array([181, 147]) 
c3 = np.array([173, 153]) 
c4 = np.array([98, 221]) 
c5 = np.array([43, 153]) 

trees_list = [c1, c2, c3, c4, c5] 

def trees_pixel(rc_list, matrix): 
     t_row = rc_list[0] 
     t_col = rc_list[1] 
     tree = matrix[t_row, t_col] 
     for i in range(1, 6, 1): 
      print "C",i,"=",tree 
     return tree 

for i in trees_list: 
     trees_pixel(i, site) 

Сайт является np.array из 400x370 строк/столбцов, что мне нужно прочитать значения из. C1 ... C5 - это местоположения (строка/столбец) из массива «сайт».

Мой код выводит следующее:

C 1 = 8.266602 
C 2 = 8.266602 
C 3 = 8.266602 
C 4 = 8.266602 
C 5 = 8.266602 
C 1 = 17.89282 
C 2 = 17.89282 
C 3 = 17.89282 
C 4 = 17.89282 
C 5 = 17.89282 
C 1 = 18.31433 
C 2 = 18.31433 
C 3 = 18.31433 
C 4 = 18.31433 
C 5 = 18.31433 
etc... 

Но то, что я ожидал был:

C 1 = 8.266602 
C 2 = 17.89282 
C 3 = 18.31433 
C 4 = 20.47229 
C 5 = 13.5907 

Как я могу это сделать, так что я буду избегать повторяющийся узор? Благодаря!

+0

есть только один цикл, почему 'C 1' повторяется? – Daniel

+0

Теперь я поместил весь код, извините, забыли некоторые строки. – Litwos

+0

Тем не менее, 't_row' и' t_col' кажутся не продвигающимися по матрице, они просто смотрят 'c1' и' c2'. Я не понимаю, как изменяется ваш выходной номер; вы не пропустили 'for' в начале' trees_pixel'? – roganjosh

ответ

1

Вы повторяете дважды, один раз внутри trees_pixel и один раз за его пределами. Если я понимаю, что вы имеете в виду, вы хотите что-то похожее на следующее:

import numpy as np 

site = np.random.random((400, 370)) # Used in place of your data 
c1 = np.array([148, 108]) 
c2 = np.array([181, 147]) 
c3 = np.array([173, 153]) 
c4 = np.array([98, 221]) 
c5 = np.array([43, 153]) 

trees_list = [c1, c2, c3, c4, c5] 

def trees_pixel(rc_list, listIdx, matrix): 
     t_row = rc_list[0] 
     t_col = rc_list[1] 
     tree = matrix[t_row, t_col] 
     print "C",listIdx,"=",tree 
     return tree 

for i in xrange(len(trees_list)): 
    trees_pixel(trees_list[i], i+1, site) 


C 1 = 0.820317259854 
C 2 = 0.960883528796 
C 3 = 0.363985436225 
C 4 = 0.189575015844 
C 5 = 0.667578060856 
+0

Это то, что мне нужно. Благодаря! :) – Litwos

Смежные вопросы