Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python函数中的If语句_Python_Function_If Statement - Fatal编程技术网

python函数中的If语句

python函数中的If语句,python,function,if-statement,Python,Function,If Statement,我的数据计算有一些错误。误差在某一点发生变化,因此必须对该功能进行微调。 所以我需要这样的东西: import numpy as np U1=np.array([0.1,0.5,1,2]) def UErr(U): if U>0.68: return 0.003*U+0.01 else: return 0.003*U+0.001 U1Err=UErr(U1) 这显然不起作用,因为U>0.68不可能为真,因为它是一个数组。 我想用文字来

我的数据计算有一些错误。误差在某一点发生变化,因此必须对该功能进行微调。 所以我需要这样的东西:

import numpy as np

U1=np.array([0.1,0.5,1,2])

def UErr(U):
    if U>0.68:
        return 0.003*U+0.01
    else:
        return 0.003*U+0.001

U1Err=UErr(U1)

这显然不起作用,因为U>0.68不可能为真,因为它是一个数组。 我想用文字来表达: 它应返回具有以下值的数组:

U1Err=([0.0013,0.0025,0.013,0.016])
我知道,这是一个非常基本的问题,因为我只是为了一些简单的数据分析而学习python,所以我错过了很多基础知识


如果有人能帮助我,我将不胜感激

如果您有一个列表作为输入,则需要在其上循环或应用函数

def UErr(U):
    return map(lambda u: 0.003*u+0.01 if u > 0.68 else 0.003*u+0.001,  U)

您需要运行一个循环来遍历列表或数组的每个元素。如果要获取整个数组的所有元素,可以返回列表直到结束

def UErr(U):
    for element in range(0,len(U)):
        if U[element] > 0.68:
            U[element]= 0.003*U+0.01
        else:
            U[element] = 0.003*U+0.01
    return U
也可以这样做:

def UErr(U):
    if any(i > 0.68 for i in U):
        return map(lambda x:0.003*x+0.01,U)
    else:
        return map(lambda x:0.003*x+0.001,U)

这应该返回整个数组还是Python中包含正确值的列表?您已经遍历了循环。这不可能是真的,因为它是一个数组,为什么不自己尝试让它工作呢?另外,x是什么?U是一个只包含一个元素的列表吗?我有两个词要告诉你:list comprehension.element是列表中的一个值,而不是索引。除非U包含从0开始的连续整数,否则U[element]将失败。这是真的,它需要超出列表的范围,而不是元素本身。更正:好的,我又查过了。这真的不管用。因为在U中有大于0.68的元素,所以它会为所有元素返回更高的值0.003*U+0.01,而不仅仅是大于0.68的元素。。。假设U=np.array[2,1,0.5,0.1],那么它应该为第一个元素返回0.16的值,为最后一个元素返回0.0013的值。根据你的代码,我最后得到了0.0103/我不知道你们为什么需要Numpy,但请再次检查答案