Python:在数组的行和列上迭代

Python:在数组的行和列上迭代,python,arrays,loops,numpy,multidimensional-array,Python,Arrays,Loops,Numpy,Multidimensional Array,我正在寻找一种简单有效的方法,通过行和列对矩阵(2D数组)进行迭代。使用Python 我有3个相同大小的2D矩阵:一个包含x坐标,一个包含y坐标,还有一个包含这些坐标处的某些数据(实际温度)的值 我想迭代“data”矩阵的每个元素,但要跟踪当前的行和列,因为我需要在“x”和“y”矩阵中寻找等价值 为了更清楚,我会在Matlab中这样写: for i = 1:nb_line for j = 1:nb_column if data(i,j) ~= 0

我正在寻找一种简单有效的方法,通过行和列对矩阵(2D数组)进行迭代。使用Python

我有3个相同大小的2D矩阵:一个包含x坐标,一个包含y坐标,还有一个包含这些坐标处的某些数据(实际温度)的值

我想迭代“data”矩阵的每个元素,但要跟踪当前的行和列,因为我需要在“x”和“y”矩阵中寻找等价值

为了更清楚,我会在Matlab中这样写:

for i = 1:nb_line
    for j = 1:nb_column
        if data(i,j) ~= 0
            <operations using x[i,j] and y[i,j]>
        end
    end
end
使用该函数

比如说,

>>> a = ['foo', 'bar', 'foorbar']
>>> for i, name in enumerate(a):
...     print 'item %d is %s' % (i, name)
... 
item 0 is foo
item 1 is bar
item 2 is foorbar

如果您实际上不需要<代码> i <代码>,<代码> j>代码>值,而只在另一个矩阵中对应的条目,您可能需要只考虑行:

>>> b = [[1, 2], [3, 4]]
>>> x = [['foo', 'bar'], ['barFoo', 'fooBar']]
>>> for rows in zip(b, x):
...     for bval, xval in zip(*rows):
...         print 'bval: %d; xval: %s' % (bval, xval)
... 
bval: 1; xval: foo
bval: 2; xval: bar
bval: 3; xval: barFoo
bval: 4; xval: fooBar
使用该函数

比如说,

>>> a = ['foo', 'bar', 'foorbar']
>>> for i, name in enumerate(a):
...     print 'item %d is %s' % (i, name)
... 
item 0 is foo
item 1 is bar
item 2 is foorbar

如果您实际上不需要<代码> i <代码>,<代码> j>代码>值,而只在另一个矩阵中对应的条目,您可能需要只考虑行:

>>> b = [[1, 2], [3, 4]]
>>> x = [['foo', 'bar'], ['barFoo', 'fooBar']]
>>> for rows in zip(b, x):
...     for bval, xval in zip(*rows):
...         print 'bval: %d; xval: %s' % (bval, xval)
... 
bval: 1; xval: foo
bval: 2; xval: bar
bval: 3; xval: barFoo
bval: 4; xval: fooBar

听起来您要查找的可能是
enumerate()
,它是您正在迭代的集合中的值的索引以及值:

对于i,枚举中的行(数据):
对于j,枚举中的elt(第行):
如果不是elt==0:

听起来您要查找的可能是
enumerate()
,它是与值一起迭代的集合中的值的索引:

对于i,枚举中的行(数据):
对于j,枚举中的elt(第行):
如果不是elt==0:

您尝试执行的操作是什么?在Matlab和numpy中,大多数情况下,在数组上运行该函数的矢量化版本,而不是在元素中迭代,而是重新投影一些地理数据。所以对于每个元素,我必须首先检查值是否不在屏蔽数据区域,然后我必须计算这个数据点在新矩阵中的位置。所以我不认为我可以使用矢量化函数来实现这一点。@Gulux屏蔽的数据也可以作为numpy数组使用吗?如果是,你能粘贴一个例子吗?如果你能写出一个很小的例子,以及你想要达到的目标,那么通常有一种方法可以用几行numpy来实现:)请参阅,有关如何以代码形式提供数据的一些例子,我在问题中添加了一些细节和我的代码。但是我不能在这里发布数据。你想做什么操作?在Matlab和numpy中,大多数情况下,在数组上运行该函数的矢量化版本,而不是在元素中迭代,而是重新投影一些地理数据。所以对于每个元素,我必须首先检查值是否不在屏蔽数据区域,然后我必须计算这个数据点在新矩阵中的位置。所以我不认为我可以使用矢量化函数来实现这一点。@Gulux屏蔽的数据也可以作为numpy数组使用吗?如果是,你能粘贴一个例子吗?如果你能写出一个很小的例子,以及你想要达到的目标,那么通常有一种方法可以用几行numpy来实现:)请参阅,有关如何以代码形式提供数据的一些例子,我在问题中添加了一些细节和我的代码。但我不能在这里发布数据。事实上,这正是我想要的。谢谢事实上,这正是我想要的。谢谢哇,我从来没有听说过这个拉链(),但它的工作原理很有魅力!我的脚本执行时间从1-2分钟下降到12秒!我采纳了它。谢谢。哇,我从来没听说过这个拉链(),但它很有魅力!我的脚本执行时间从1-2分钟下降到12秒!我采纳了它。谢谢