我得到沿某一轴的指数。例如,当2D和axis=-1时:
>>> axis = -1
>>> a = rand(5, 3) - 0.5; a
array([[ 0.49970414, -0.14251437, 0.2881351 ],
[ 0.3280437 , 0.33766112, 0.4263927 ],
[ 0.37377502, 0.05392274, -0.4647834 ],
[-0.09461463, -0.25347861, -0.29381079],
[-0.09642799, 0.15729681, 0.06048399]])
>>> axisinds = a.__abs__().argmax(axis); axisinds
array([0, 2, 2, 2, 1])
现在我如何通过沿着该轴获取索引元素来将数组减少1维?你知道吗
对于2D和axis=-1,可以这样做(为了获得示例数组中每行的绝对最大值):
>>> a[arange(len(axisinds)), axisinds]
array([ 0.49970414, 0.4263927 , -0.4647834 , -0.29381079, 0.15729681])
但这是非常特殊的,仅限于1或0个结果维度。
任何ndim
和axis
怎么办?你知道吗
现在我自己找到了一个简单的解决办法:
编辑:但是这种方法被证明在轴方向上最多只能有31个元素(32位?)-因为
np.choose
的(未记录的)限制。在许多情况下,这是可以的。你知道吗但这是一个
无限方法:
因此,ND absolute min示例可以如下所示:
相关问题 更多 >
编程相关推荐