numpy中多个向量的元素明智最小值


问题内容

我知道在numpy中,我可以使用

numpy.minimum(v1, v2)

如果我有一个等维向量列表V = [v1, v2, v3, v4](但是列表,而不是数组)怎么办?服用numpy.minimum(*V)无效。首选的替代方法是什么?


问题答案:

*V如果V只有2个数组,则可以使用。 np.minimum是a,ufunc并接受2个参数。

由于ufunc它具有.reduce方法,因此可以将其重复应用于列表输入。

In [321]: np.minimum.reduce([np.arange(3), np.arange(2,-1,-1), np.ones((3,))])
Out[321]: array([ 0.,  1.,  0.])

我怀疑这种np.min方法速度更快,但这可能取决于数组和列表的大小。

In [323]: np.array([np.arange(3), np.arange(2,-1,-1), np.ones((3,))]).min(axis=0)
Out[323]: array([ 0.,  1.,  0.])

ufunc也有一个accumulate能向我们展示了还原的每一个阶段的结果。这不是很有趣,但是我可以调整输入来更改它。

In [325]: np.minimum.accumulate([np.arange(3), np.arange(2,-1,-1), np.ones((3,))])
     ...: 
Out[325]: 
array([[ 0.,  1.,  2.],
       [ 0.,  1.,  0.],
       [ 0.,  1.,  0.]])