具有可变维度的数组的Python方法

时间:2015-11-09 18:08:04

标签: python numpy

这是一个简单的问题,但我无法找到最佳实践,并且想知道是否有比if语句更简单的东西。假设我有一种方法可以接收变量'数据'形状(N,M),其中N可以变化。具体来说,有时数据是形状的一维数组(M,),其他时间N = 100,数据是形状(100,M)。

以下是该方法的骨架代码,当N> 1时。如果N> 1或N可以等于1(或者最好是data.shape =(M,),而不仅仅是(1,M)),我怎样才能将这个用于一般情况?我可以提出很多if语句,但我希望有一个更清晰的解决方案。

{4,}

*注意:jstart和jend取决于j,但不依赖于我

1 个答案:

答案 0 :(得分:2)

已经有一段时间了,因为我花了很多时间使用numpy,但是IIRC,你应该能够使用Ellipsis至少删除外部循环:

for j in range(10):
    jstart = jstarts[j]
    jend = jends[j]
    tmp = np.sum(data[...,jstart:jend]*vol[jstart:jend], axis=1)/np.sum(vol[jstart:jend])
    data_new[..., jstart:jend] = tmp