2017-05-29 88 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

非常感谢!有效 –