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.]])