我有个问题。我目前正在从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.reshape((m,n))对其进行整形。但是可能会有更优雅的方法吗?

每个帮助都非常欢迎!

最好的祝愿,
克里斯

最佳答案

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

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显式执行)。

09-25 17:37