我认为指出我的问题最简单,一般情况很难解释.
说我有一个矩阵
a with dimensions NxMxT,
人们可以将T视为时间维度(使问题更容易).设(n,m)为通过NxM的指数.我可以调用(n,m)状态空间标识符.然后我需要找到python / scipy等价的
for each (n,m):
find a*(n,m) = min(a(n,m,:) s.t. a*(n,m) > a(n,m,T)
也就是说,找到仍然高于最后一个(在时间维度中)观察的最小状态空间值 – 对于整个状态空间.
我的第一个尝试是首先解决内部问题(找到一个高于[…, – 1]的):
aHigherThanLast = a[ a > a[...,-1][...,newaxis] ]
然后我想在每个(n,m)中找到所有这些中最小的.不幸的是,aHigherThanLast现在包含所有这些值的一维数组,因此我不再具有(n,m)对应关系.什么是更好的方法呢?
作为一个额外的问题:状态空间是可变的,它也可能是3维或更多维度(NxMxKx …),我不能硬编码.任何一种
for (n,m,t) in nditer(a):
不可行.
非常感谢!
/编辑:
a = array([[[[[[[[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.],
[ 0., 2., 1.]]]],