2017-06-05 39 views
2

我相信這很簡單。我搜索谷歌和這裏沒有找到具體的答案兩個數字之間的Python求和元素

a = rnd.randn(100) 
print np.sum(a) 

給出一個

np.sum(a[a>0.]) 

元素的總和即爲元素比0

print np.sum((a < 2.0) & (a > -2.0)) 

OK更大所以這個總和返回2和-2之間的元素數量。

如何獲得2和-2之間的元素的總和?我試過很多東西,例如

np.sum(a[a >0.] & a[a<1.]) 

等,並不能找到正確的方式做它:-(

回答

4

&是位運算符,不會給你正確的結果,相反,您需要使用np.logical_and獲得掩碼數組然後,你可以把它作爲索引到陣列中爲了得到渴望的項目,然後將它傳遞給sum

In [9]: a = np.arange(-10, 10) 

In [10]: a[np.logical_and(a>-2,a<2)] 
Out[10]: array([-1, 0, 1]) 

In [11]: a[np.logical_and(a>-2,a<2)].sum() 
Out[11]: 0 
+0

完美謝謝 – gravity121

1

你能做到這一點的只是以一種非常基本的直接方式,如:

function getSum(numArray, lowVal, highVal): 
    mySum = 0 
    for i in range(len(numArray)): 
     if(numArray[i] >= lowVal and numArray[i] <= highVal): 
      mySum = mySum + numArray[i] 

    return mySum 

yourAnswer = getSum(a, -2, 2) 
+0

可愛謝謝 – gravity121