2017-05-29 62 views
-1

我有一個叫做stack的numpy數組,比如50乘50,它在每個位置都有一個特定值(例如stack[23, 19] = -0.13)。 我試圖創建一個if語句,如果任何位置的值低於某個值,該值將變爲0. 因此如果stack[23, 19] = -0.13在if語句之前,它將在語句後變成stack[23, 19] = 0。 到目前爲止,我有創建一個If語句來刪除數組中的元素

peaks = stack 
if abs(peaks[i, i]) > -1.2 or abs(peaks[i, i]) < 1.2: 
    peaks[i, i] = 0 

而且我想「峯」,以保持相同的50×50的形狀「堆」, ,但是這似乎並沒有工作。

任何幫助,將不勝感激! 謝謝!

+0

'ABS(峯[我,我])> -1.2'不知道什麼ABS不會,但如果這就是蟒蛇的絕對作用,它總是返回真正的 – Brian

+0

abs(x)將總是大於或等於零,但是即使在改變它之後,您仍然得不到所需的解決方案,那麼請展示一下如何初始化數組(或樣本數組)和循環以迭代所有值。 – Gahan

回答

0

你想要做的是在你的numpy數組上映射一個函數。這樣做的一個好方法是使用numpy.vectorize

def my_condition(x) : 
    if abs(x)<1.2 : 
    #know that abs refers to the absolute value 
      return 0 
    return x 
vfunct=np.vectorize(my_condition) 
peaks=vfunct(stack) 
+0

非常感謝!有效 –