我的数据有一些错误需要计算。错误在某一点发生变化,因此必须对功能稍作调整。 所以我需要这样的东西:
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,我缺少很多基础知识。
如果有人能帮助我,我将不胜感激。 :)
答案 0 :(得分:0)
如果您有一个列表作为输入,则需要循环或在其上应用函数
def UErr(U):
return map(lambda u: 0.003*u+0.01 if u > 0.68 else 0.003*u+0.001, U)
答案 1 :(得分:0)
也可以这样做:
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)
答案 2 :(得分:-1)
您需要运行一个循环来遍历列表或数组的每个元素。如果你想获得整个数组的所有元素,你可以将列表返回到最后。
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