2017-07-06 3 views
0

Ich habe folgendes Array "class_id"Convert U1 Array in Python int

array([[array(['2'], 
    dtype='<U1')], 
    [array(['3'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    ..., 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')]], dtype=object) 

Wenn ich die Funktion bin mit:

class_id.astype (int)

ich die folgende Fehlermeldung:

ValueError: setting an array element with a sequence. 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-124-3ad39bf87e7d> in <module>() 
----> 1 class_id.astype(int) 
ValueError: setting an array element with a sequence. 

ich möchte folgende Array erhalten:

array([[1], 
    [2], 
    [1], 
    ..., 
    [1], 
    [1], 
    [1]]) 

Welche Funktion soll ich verwenden?

+0

Können Sie bitte eine Methode zum Erstellen von Klassen-ID-Array teilen? –

Antwort

1

Sie haben ein Array von Array-Listen, Sie müssen eine Layer/Dimension fallen lassen, um Ihre gewünschte Ausgabe zu erhalten; Sie können dies versuchen:

import numpy as np 
np.array([s[0].astype(int) for s in class_id]) 

#array([[2], 
#  [3], 
#  [2], 
#  [2], 
#  [2], 
#  [2]]) 

class_id = array([[array(['2'], 
    dtype='<U1')], 
    [array(['3'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')]], dtype=object) 
+0

Danke @Psidom! Es klappt –

0

Ihr Array neu zu erstellen, muss ich verwenden:

array = np.array 
In [460]: alist = [[array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['3'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')]] 
In [461]: arr = np.zeros((6,1), dtype=object) 
In [462]: arr[:,0] = alist 
In [463]: arr 
Out[463]: 
array([[[array(['2'], 
     dtype='<U1')]], 
     [[array(['3'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]]], dtype=object) 

eine einfache Kopie n Paste Streifen aus den inneren Array Definitionen:

array([[['2']], # (6,1,1) shape 

     [['3']], 
     ... 
     [['2']]], dtype=object) 

Entfernen einer Ebene von [] mit arr[:,0], ich kann die Arrays mit Verkettung verbinden und das U1 Array einfach in int mit einem Aufruf an astype konvertieren.

In [464]: np.concatenate(arr[:,0]) 
Out[464]: 
array([['2'], 
     ['3'], 
     ['2'], 
     ['2'], 
     ['2'], 
     ['2']], 
     dtype='<U1') 
In [465]: np.concatenate(arr[:,0]).astype(int) 
Out[465]: 
array([[2], 
     [3], 
     [2], 
     [2], 
     [2], 
     [2]])