Python 如何将科学符号列表中的str改为int
我有一个列表,如下所示:Python 如何将科学符号列表中的str改为int,python,string,list,int,scientific-notation,Python,String,List,Int,Scientific Notation,我有一个列表,如下所示: ['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+
['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00,
3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00,
1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00,
4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
old_list = ['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
new_list = [float(i) for i in old_list[0].split(',')]
>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]
如何将其更改为int(现在显示错误,表示为str)以查找平均值和标准偏差?使用列表理解:
list = [float(x) for x in '3.2323943e+00, 4.4316312e+00'.split(',')]
返回:
[3.2323943, 4.4316312]
只需添加其余数据。使用列表理解:
list = [float(x) for x in '3.2323943e+00, 4.4316312e+00'.split(',')]
返回:
[3.2323943, 4.4316312]
只需添加其余数据。您不能,它们不是整数,而是浮点值。您的列表是一个由一个大字符串组成的单元素列表,其中包含逗号分隔的浮点值,用数学表示法表示:
floats = list(map(float,'3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00'.split(",")))
print (floats)
mean = sum(floats)/len(floats)
variance = sum((x-mean)**2 for x in floats) / len(floats)
popul = variance**0.5
from pprint import pprint
print(floats)
print("Mean",mean)
print("Variance",variance)
print("Population",popul)
输出:
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351,
3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672,
4.0061081, 3.8303311]
Mean 3.74745516875
Variance 0.6742259030611121
Population 0.8211126007199695
不能,它们不是整数,而是浮点值。您的列表是一个由一个大字符串组成的单元素列表,其中包含逗号分隔的浮点值,用数学表示法表示:
floats = list(map(float,'3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00'.split(",")))
print (floats)
mean = sum(floats)/len(floats)
variance = sum((x-mean)**2 for x in floats) / len(floats)
popul = variance**0.5
from pprint import pprint
print(floats)
print("Mean",mean)
print("Variance",variance)
print("Population",popul)
输出:
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351,
3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672,
4.0061081, 3.8303311]
Mean 3.74745516875
Variance 0.6742259030611121
Population 0.8211126007199695
另一种方式是这样的:
['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00,
3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00,
1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00,
4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
old_list = ['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
new_list = [float(i) for i in old_list[0].split(',')]
>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]
然后,您可以使用numpy
获取新列表的平均值和标准值:
import numpy as np
mean_of_list = np.mean(new_list)
std_of_list = np.std(new_list)
为了解释,您的值当前在一个由一个长字符串组成的列表中(我称之为old_list
)。我的列表理解在逗号处将其拆分(使用.split(',')
),并将其转换为浮点,而不是字符串(使用浮点(…)
)
注意整数与浮动的比较
正如Patrick Artner在他们的文章中指出的,将其转换为float而不是int是有意义的,因为您的值看起来像float(它们似乎有一个相关的小数部分)。如果您确实希望将它们作为int,只需执行以下操作:
new_list = [int(float(i)) for i in old_list[0].split(',')]
但您的最终列表将是:
>>> new_list
[3, 4, 4, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 3]
这可能不是您想要的。另一种方法是:
['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00,
3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00,
1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00,
4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
old_list = ['3.2323943e+00, 4.4316312e+00, 4.3174178e+00, 3.8661688e+00, 3.6366895e+00, 3.4324592e+00, 3.3091351e+00, 3.1746527e+00, 1.0588169e+00, 4.4036068e+00, 4.4692073e+00, 4.3857228e+00, 4.2660739e+00, 4.1388672e+00, 4.0061081e+00, 3.8303311e+00']
new_list = [float(i) for i in old_list[0].split(',')]
>>> new_list
[3.2323943, 4.4316312, 4.3174178, 3.8661688, 3.6366895, 3.4324592, 3.3091351, 3.1746527, 1.0588169, 4.4036068, 4.4692073, 4.3857228, 4.2660739, 4.1388672, 4.0061081, 3.8303311]
然后,您可以使用numpy
获取新列表的平均值和标准值:
import numpy as np
mean_of_list = np.mean(new_list)
std_of_list = np.std(new_list)
为了解释,您的值当前在一个由一个长字符串组成的列表中(我称之为old_list
)。我的列表理解在逗号处将其拆分(使用.split(',')
),并将其转换为浮点,而不是字符串(使用浮点(…)
)
注意整数与浮动的比较
正如Patrick Artner在他们的文章中指出的,将其转换为float而不是int是有意义的,因为您的值看起来像float(它们似乎有一个相关的小数部分)。如果您确实希望将它们作为int,只需执行以下操作:
new_list = [int(float(i)) for i in old_list[0].split(',')]
但您的最终列表将是:
>>> new_list
[3, 4, 4, 3, 3, 3, 3, 3, 1, 4, 4, 4, 4, 4, 4, 3]
这可能不是您想要的。它们是浮动。。。不是ints。。列表不是列表,而是字符串。。。。请在发布前测试您的答案。它们是浮动。。。不是ints。。列表不是列表,而是字符串。。。。请在发布前测试你的答案。问题不在于科学符号,而在于你的值在一个由一个长字符串组成的列表中。“科学记数法”可以很容易地理解为浮点数,从中可以得到平均值和标准偏差。请参阅下面的答案以获取解决方案。问题不在于科学符号,而在于您的值位于由一个长字符串组成的列表中。“科学记数法”可以很容易地理解为浮点数,从中可以得到平均值和标准偏差。有关解决方案,请参见下面的答案。