如何按元素计算数组和数字元素之间的最大值?

时间:2013-12-21 11:58:27

标签: python arrays numpy

我有一个numpy数组,我希望每个值和0之间的最大值。

array([  7.1788812 ,   7.16842748,   7.1601692 ,   7.16941517,
   -30.89416777, -30.89403639, -30.89971925, -30.89529326,
   -31.59193447, -31.59202963])

通缉结果:

array([ 7.1788812 ,   7.16842748,   7.1601692 ,   7.16941517,0,0,0,0,0,0])

有不同的方法来获得结果,但我想要一些短而非常pythonic

4 个答案:

答案 0 :(得分:6)

np.maximum计算数组元素的元素最大值,numpy有一些广播规则(参见here);所以你可以试试这个:

np.maximum(x, 0)

答案 1 :(得分:2)

您还可以使用numpy.clip

import numpy as np
a = np.array([  7.1788812 ,   7.16842748,   7.1601692 ,   7.16941517,
   -30.89416777, -30.89403639, -30.89971925, -30.89529326,
   -31.59193447, -31.59202963])
np.clip(a, 0, np.inf)

答案 2 :(得分:2)

np.where(a>= 0, a, 0)

numpy.where似乎就像你要找的那样。如果条件为假,则给出0。

答案 3 :(得分:1)

newArray = array([max(x,0) for x in OriginalArray])