Python 我的代码以某种方式乘以系数0.5,而我没有';我不知道为什么
我为一个绘图脚本编写了一个单元转换器。该转换器的工作原理是确定所提供数据的单位,将其转换为SI单位,然后将其转换为目标单位 除了目标单位“mmol/g”之外,它在所有单位转换中都不会出现问题 以下是转换器的代码:Python 我的代码以某种方式乘以系数0.5,而我没有';我不知道为什么,python,numpy,scipy,Python,Numpy,Scipy,我为一个绘图脚本编写了一个单元转换器。该转换器的工作原理是确定所提供数据的单位,将其转换为SI单位,然后将其转换为目标单位 除了目标单位“mmol/g”之外,它在所有单位转换中都不会出现问题 以下是转换器的代码: 将scipy.constants作为单位导入 将numpy作为np导入 示例_data=np.arange(10,20) def装置转换器(装置、目标装置、数字数据): 单位_转换器_dict={'kPa':单位.kilo, “atm”:units.atm, “bar”:units.b
将scipy.constants作为单位导入
将numpy作为np导入
示例_data=np.arange(10,20)
def装置转换器(装置、目标装置、数字数据):
单位_转换器_dict={'kPa':单位.kilo,
“atm”:units.atm,
“bar”:units.bar,
“mmHg”:单位为.mmHg,
“psi”:单位为.psi,
“cc/g”:单位为厘米**3/units.gram,
“cm/g”:1/units.gram,
“厘米/千克”:1,
“mmol/g”:1/(22.41396954)}
转换后的数据=数字数据*(单位转换器dict[单位]/单位转换器dict[目标单位])
返回转换后的数据
打印(单位转换器('cc/g','mmol/g',示例数据))
由于某种原因,转换后的数据正好是它应该的一半,我不明白为什么。
如果你不知道为什么mmol/g应该是22.41
因此,当我从cc/g开始,并将其转换为cm/kg时,我只需要乘以22.41 mmol/g就可以得到正确的转换。但出于某种原因,我所有的值只有转换后的一半大
如果我使用2*22.41,我会得到正确的结果。。。顺便说一句
有人知道为什么会这样吗?系数2(或相反,1/2)从何而来
我已经确定这个问题是由代码的这一部分引起的,而不是由下游的其他操作引起的。它并没有被关闭1/2,尽管它很接近。 另外,由于您使用mmol,我认为您需要1000/22.41396954。另外,由于你是双重除法,我认为当你转换时,单位需要翻转
将scipy.constants作为单位导入
将numpy作为np导入
示例_data=np.arange(10,20)
def装置转换器(装置、目标装置、数字数据):
单位_转换器_dict={'kPa':单位.kilo,
“atm”:units.atm,
“bar”:units.bar,
“mmHg”:单位为.mmHg,
“psi”:单位为.psi,
“cc/g”:(单位厘米**3/单位克),
“cm/g”:1/units.gram,
“厘米/千克”:1,
“mmol/g”:(22.41396954/1000)
转换后的数据=数字数据*(单位转换器dict[单位]/单位转换器dict[目标单位])
返回转换后的数据
打印(单位转换器('cc/g','mmol/g',示例数据))
# [0.44615033 0.49076537 0.5353804 0.57999543 0.62461047 0.6692255 0.71384053 0.75845557 0.8030706 0.84768563]
虽然离得很近,但还差1/2。
另外,由于您使用mmol,我认为您需要1000/22.41396954。另外,由于你是双重除法,我认为当你转换时,单位需要翻转
将scipy.constants作为单位导入
将numpy作为np导入
示例_data=np.arange(10,20)
def装置转换器(装置、目标装置、数字数据):
单位_转换器_dict={'kPa':单位.kilo,
“atm”:units.atm,
“bar”:units.bar,
“mmHg”:单位为.mmHg,
“psi”:单位为.psi,
“cc/g”:(单位厘米**3/单位克),
“cm/g”:1/units.gram,
“厘米/千克”:1,
“mmol/g”:(22.41396954/1000)
转换后的数据=数字数据*(单位转换器dict[单位]/单位转换器dict[目标单位])
返回转换后的数据
打印(单位转换器('cc/g','mmol/g',示例数据))
# [0.44615033 0.49076537 0.5353804 0.57999543 0.62461047 0.6692255 0.71384053 0.75845557 0.8030706 0.84768563]
能否显示正确与错误的特定样本打印输出,并说明该打印输出的预期结果是什么?要获得正确结果,只需将字典中的22.41396954更改为22.41396954*2。能否显示正确与错误的特定样本打印输出,并说明打印输出的预期结果是什么?要获得正确的结果,只需将字典中的22.41396954更改为22.41396954*2。