我有一个名为stack的numpy数组,让我们说50乘50,它在每个位置都有一个特定的值(例如stack[23, 19] = -0.13
)。
我试图创建一个if语句,如果任何位置的值低于某个值,该值将变为0。
所以如果在if语句之前stack[23, 19] = -0.13
,它将在语句之后变为stack[23, 19] = 0
。
到目前为止我已经
peaks = stack
if abs(peaks[i, i]) > -1.2 or abs(peaks[i, i]) < 1.2:
peaks[i, i] = 0
我希望“峰值”#39;要保持相同的50 x 50形状的堆叠&#39;, 但这似乎不起作用。
任何帮助将不胜感激! 谢谢!
答案 0 :(得分: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)