Scott MacDonald wrote: > Hi, > > I have a text file called 'blah' that contains only the following line: > > 5399354557888517312,5399354557888517312 > > I want to load these into a numpy array as unit64's. The following > script demonstrates my problem: > > import numpy as np > > with open('blah', 'r') as f: > x = np.loadtxt(f, delimiter=',', dtype=(np.uint64, np.uint64)) > > with open('blah', 'r') as f: > for line in f: > print line > > print x > > > The output I get is: > > 5399354557888517312,5399354557888517312 > > [5399354557888517120 5399354557888517120] > > > Am I doing something wrong? >
I don't know the full story, but it looks like the conversion from text to an integer might go through a float: In [27]: int(float(5399354557888517312)) Out[27]: 5399354557888517120L You can change this by explicitly giving a converter to loadtxt: In [31]: with open('blah', 'r') as f: ....: x = np.loadtxt(f, delimiter=',', dtype=(np.uint64, np.uint64), converters={0:int}) ....: ....: In [32]: x Out[32]: array([5399354557888517312, 5399354557888517120], dtype=uint64) Note that the first column, for which I explicitly told it to use int() as the converter, is correct. Warren > Thanks for your help, > Scott > ------------------------------------------------------------------------ > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion