Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/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 我的代码以某种方式乘以系数0.5,而我没有';我不知道为什么_Python_Numpy_Scipy - Fatal编程技术网

Python 我的代码以某种方式乘以系数0.5,而我没有';我不知道为什么

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

我为一个绘图脚本编写了一个单元转换器。该转换器的工作原理是确定所提供数据的单位,将其转换为SI单位,然后将其转换为目标单位

除了目标单位“mmol/g”之外,它在所有单位转换中都不会出现问题

以下是转换器的代码:

将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。