用于arange循环时的python数组索引

用于arange循环时的python数组索引,python,arrays,indexing,range,Python,Arrays,Indexing,Range,我有个问题。我目前正在从matlab过渡到python,虽然我发现很容易适应numpy和scipy,但有些部分仍然有点神秘;) 我要做的是计算两个嵌套循环中的数据,并将其放入(m,n)数组中,以绘制等高线图 所以我想到了以下几点: for i in arange(1, 10, 1): for k in arange(5, 50, 5): res = do_something(i, k) 但现在我不完全确定我应该如何将其转化为正确的形状(在Matlab中,我只是用I=1:

我有个问题。我目前正在从matlab过渡到python,虽然我发现很容易适应numpy和scipy,但有些部分仍然有点神秘;)

我要做的是计算两个嵌套循环中的数据,并将其放入(m,n)数组中,以绘制等高线图

所以我想到了以下几点:

for i in arange(1, 10, 1):
    for k in arange(5, 50, 5):
        res = do_something(i, k)
但现在我不完全确定我应该如何将其转化为正确的形状(在Matlab中,我只是用I=1:1:10等对循环进行索引,然后从向量中提取I的实际值…)

我可以附加res.append(res)结果,并用res.reprograme((m,n))对其进行整形。但也许有一种更优雅的方式可以做到这一点

非常欢迎您的帮助

致以最良好的祝愿,
Chris

这是一种可能的解决方案,不需要显式索引来存储值

result = [[my_function(x, y)
           for x in arange(0.3, 10.7, 2.2)]
          for y in arange(-3.2, 5.4, 0.7)]
对于需要使用
enumerate(arange(…)的显式索引的情况,
既紧凑又可读


我不确定这是使用numpy构建大型矩阵的最有效方法(但是,如果您需要一些速度,那么您应该将函数分解为多个简单的操作,每个操作都使用numpy显式执行).

我建议您执行循环以匹配结果数组中结果的索引,而不是计算函数中的参数

result = numpy.zeros((n,m), dtype=float) # I'm assuming your results are float.
for i in range(10):
    for k in range(10):
        res[i,j] = do_something(i+1, 5k+5) #don't forget range(M) starts at 0 and ends at M-1 (giving you M values)

美观紧凑。非常感谢。