打印列表 - 矩阵组合

时间:2016-01-19 17:12:50

标签: python loops numpy

我正在尝试打印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)

Site是一个400x370行/列的np.array,我需要从中读取值。 C1 ... C5是'site'数组的位置(行/列)。

我的代码打印出以下内容:

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

我该怎么做,所以我会避免重复模式?谢谢!

1 个答案:

答案 0 :(得分: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