I"m trying to import a large .csv file containing text and numbers using genfromtxt in numpy. I"m only interested in two columns. I have most of the import sorted out with:
def importfile(root):
data = root.entry.get()
atw = np.genfromtxt(data, delimiter=",",
skip_header=1,
skip_footer=2,
autostrip=True,
usecols=(25,26),
dtype=("|S10"))
elem = atw[:,0]
concs = atw[:,1]
print(elem)
print(concs)
With output for elem and concs respectively:
["Na2O" "MgO" "Al2O3" "SiO2" "P2O5" "SO3" "Cl" "K2O" "CaO" "TiO2" "Cr2O3"
"MnO" "FeO" "NiO" "Cu2O" "ZnO" "Ga2O3" "SrO" "Y2O3"]
["3.76E+00" "1.31E+01" "1.14E+01" "4.04E+01" "1.24E+00" "5.89E-02"
"2.43E-02" "1.53E+00" "1.49E+01" "2.87E+00" "6.05E-02" "1.96E-01"
"1.17E+01" "3.69E-02" "8.73E-03" "1.39E-02" "1.93E-03" "1.88E-01"
"5.58E-03"]
I have tried many different things for converting the concs string into a float, but it doesn"t seem to like the fact that the concs are in scientific notation.... does there exist a way to turn the concs values into a float? Thanks in advance for your support.
解决方案
The float function can do this:
>>> float("1.31E+01")
13.1
or for a list:
>>> map(float, ["3.76E+00", "1.31E+01", "1.14E+01"])
[3.76, 13.1, 11.4]