我的输出数组如下所示。然后,我想使所有元素的值为零,它们之间的值在(0.75 to 1.06)
(0,75 > output > 1.06)
之间。
array([2. , 1.72787724, 1.45575448, 1.18363171, 0.91150895,
0.63938619, 0.36726343, 0.09514066, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0.12235294,
0.43529412, 0.74823529, 1.06117647, 1.37411765, 1.68705882,
2. ])
我尝试了np.where(0.75 >output >1.06,0,1)
,但不起作用:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
请帮助我解决此类问题。
谢谢。
答案 0 :(得分:0)
您可以使用内置在逻辑运算符中的numpys来执行此操作。
试试:np.logical_and(np.where(output > 0.75), np.where(output < 1.06))
答案 1 :(得分:0)
您可以使用np.vectorize
将函数应用于数组的元素,例如:
a = np.array([[-9,-7,-3],[-1,9,3],[1,4,10]])
def func(x):
if -5<x<5:
return 0
else:
return x
vfunc = np.vectorize(func)
b = vfunc(a)
print(b)
输出
[[-9 -7 0]
[ 0 9 0]
[ 0 0 10]]