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,但请再次检查答案