我有一个表单数组
[-0.87336,0.18776,1.00000,0.56449,-0.27645]
我想把它转换成一个数组的形式
[-1.0,0.0,1.0,1.0,0.0]
遵循这样一条规则:如果初始数组的元素i小于或等于-0.5,则为其分配数字-1.0;如果在区间(-0.5,0.5)内,则为其指定值0.0,最后,如果大于或等于0.5,则为其指定值1.0
我试着定义一个函数
def modulator(x):
if -0.5<x<0.5:
return 0
elif 0.5<=x:
return 1
else:
return -1
然后我用for循环做了这个作业
array_new = []
for el in array:
ell = [modulator(i) for i in el]
array_new.append(ell)
有没有更优雅的Python式方法? 我考虑过np.where(),但我不知道如何处理多个条件
您可以使用内置的^{} 函数来实现这一点
在numpy中,您可以使用
np.round
:其中:
如果您不喜欢
-0.
,可以添加0.
:如果您的输入超出了
round
将直接起作用的范围(即示例中的值介于-1和+1之间,但如果它们远远超出此范围),您可以首先使用clip
:作为检查,我运行了以下内容以覆盖我不确定的边界:
您可以使用
np.select
(这将处理大于1和小于-1的值,如果舍入失败):相关问题 更多 >
编程相关推荐