2016-05-05 1 views
0

Wenn ich eine Klasse bin die Vorhersage mitInconsistant Verhalten von ndarray bei Leer in Python 3.X

Klassifikator Modellvariable kehrt
class=modelftr.predict(X_t) 

die Klasse

>>class 

array(['class1'],dtype='<U47') 

während Scikit-Learn, wenn ich eine Variable definiert als

x=np.ndarray([],dtype='<U47')

Aufruf x[0] kehrt

Traceback (most recent call last):

File "", line 1, in

IndexError: too many indices for array

Wenn ich eine Variable bin definieren als:

class=np.ndarray([''],dtype='<U47') 

Fehler erzeugt als:

Traceback (most recent call last):

File "", line 1, in

TypeError: an integer is required

Warum ein solches Verhalten?

Antwort

2

Das erste Beispiel ist ein 1-Element-Array:

In [50]: a=np.array(['one'],dtype='U10') 

In [51]: a.shape 
Out[51]: (1,) 

In [52]: a[0] 
Out[52]: 'one' 

Das zweite ist ein Array mit Elementen 0.

In [53]: a=np.array([],dtype='U10') 

In [54]: a.shape 
Out[54]: (0,) 

Die einzige Indizierung mit einem leeren Tupel erlaubt ist:

In [56]: a[()] 
Out[56]: 
array([], 
     dtype='<U10') 

Auf einer neuen numpy, a[0] produziert IndexError: index 0 is out of bounds for axis 0 with size 0

Wie für die letzte, die Erstellung und einfache Indizierung funktioniert genauso wie bei der zuerst.

In [58]: a=np.array([''],dtype='U10') 

In [59]: a 
Out[59]: 
array([''], 
     dtype='<U10') 

In [60]: a[0] 
Out[60]: '' 

Welcher Code erzeugt genau diesen letzten Fehler?

+0

Der letzte Fehler wird während der Deklaration selbst erzeugt, ich bin mir nicht sicher, aber ich fühle, dtype ist verantwortlich. –