[Numpy-discussion] Using gentxt to import a csv with a string class label and hundreds of integer features

Julian Taylor jtaylor.debian at googlemail.com
Fri May 8 08:42:53 EDT 2015


On Thu, May 7, 2015 at 2:26 AM, Dammy <damilarefagbemi at gmail.com> wrote:
> Hi,
> I am trying to use numpy.gentxt to import a csv for classification using
> scikit-learn. The first column in the csv is a string type class label while
> 200+ extra columns are integer features.
> Please I wish to find out how I can use the gentext function to specify a
> dtype of string for the first column while specifying int type for all other
> columns.
>
> I have tried using "dtype=None" as shown below, but when I print
> dataset.shape,  I get (number_or_rows,) i.e no columns are read in:
>  dataset = np.genfromtxt(file,delimiter=',', skip_header=True)
>
> I also tried setting the dtypes as shown in the examples below, but I get
> the same error as dtype=None:

these dtypes will create structured arrays:
http://docs.scipy.org/doc/numpy/user/basics.rec.html

so it is expected that the shape is the number of rows, the colums are
part of the dtype and can be accessed like a dictionary:

In [21]: d = np.ones(3, dtype='S2, int8')

In [22]: d
Out[22]:
array([('1', 1), ('1', 1), ('1', 1)],
      dtype=[('f0', 'S2'), ('f1', 'i1')])

In [23]: d.shape
Out[23]: (3,)

In [24]: d.dtype.names
Out[24]: ('f0', 'f1')

In [25]: d[0]
Out[25]: ('1', 1)

In [26]: d['f0']
Out[26]:
array(['1', '1', '1'],
      dtype='|S2')

In [27]: d['f1']
Out[27]: array([1, 1, 1], dtype=int8)



More information about the NumPy-Discussion mailing list