用于arange循环时的python数组索引
我有个问题。我目前正在从matlab过渡到python,虽然我发现很容易适应numpy和scipy,但有些部分仍然有点神秘;) 我要做的是计算两个嵌套循环中的数据,并将其放入(m,n)数组中,以绘制等高线图 所以我想到了以下几点:用于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:
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)
美观紧凑。非常感谢。