我有个问题。我目前正在从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显式执行)。