Python:迭代不同大小的数组

时间:2018-05-31 13:31:48

标签: python arrays numpy indexing vectorization

对于我的工作,我正在尝试编写一个函数来计算来自两个输入的网格垂直水平的压力:

1)xArray.DataArray包含至少2个与表面压力场​​相对应的尺寸(但通常另外一次和一个整体构件尺寸,可能更多)
2)对应于垂直水平数的整数

它应该返回一个类似于输入数组副本的数组,并带有额外的垂直维度。

相关部分是:

pressure = np.empty(sfc_p.shape + (vert_res,), dtype=float)

# loop 
for lev in range(vert_res):
    pressure[..., lev] = float(a_n[lev]) + float(b_n[lev]) * sfc_p.values[sfc_p.shape[:]]

return pressure

sfc_p是输入数组,vert_res是一个整数,a_nb_n是一些系数。

sfc_ppressure的形状为:

(1, 51, 66, 131)  
(1, 51, 66, 131, 137)  

分别作为一个例子。

无论如何,这会产生错误:
" IndexError:索引1超出轴0的范围,大小为1"

这显然是指第一个维度,但我根本看不出什么是错误的,或者在这种情况下找不到如何正确索引。我没有发现任何类似的问题。有人可以帮帮我吗? 如果有任何不清楚的地方,我将很乐意提供进一步的信息。

1 个答案:

答案 0 :(得分:0)

简单地替换 sfc_p.shape[:] 在行中: pressure[..., lev] = float(a_n[lev]) + float(b_n[lev]) * sfc_p.values[sfc_p.shape[:]]
解决了我的问题。谢谢大家帮我澄清我的问题!