2016-04-29 14 views
3

zu erstellen Wenn das Array eine Größe von 2x2 oder größer hat, ist alles gut, aber wenn die Dimension der Zeile 1 ist, zum Beispiel 1x2, macht numpy etwas I hatte nicht erwartet.Erstellen eines numpy Array schlägt fehl, wenn ich versuche, aus einem Array von QString

Wie kann ich das lösen?

# TEST 1 OK 
myarray = np.array([[QString('hello'), QString('world')], 
        [QString('hello'), QString('moon')]], 
        dtype=object) 
print myarray 
print myarray.shape 
#[[PyQt4.QtCore.QString(u'hello') PyQt4.QtCore.QString(u'world')] 
# [PyQt4.QtCore.QString(u'hello') PyQt4.QtCore.QString(u'moon')]] 
#(2, 2) 


# TEST 2 OK 
myarray = np.array([['hello'], ['world']], dtype=object) 
print myarray 
print myarray.shape 
#[['hello'] 
# ['world']] 
#(2, 1) 


# TEST 3 FAIL 
myarray = np.array([[QString('hello'), QString('world')]], dtype=object) 
print myarray 
print myarray.shape 
#[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[PyQt4.QtCore.QString(u'h')]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 
#.. 
#[[[[[[[[[[[[[[[[[[[[[[[[[[[[[PyQt4.QtCore.QString(u'e')]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 
# etc... 
#(1, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 
+0

Oh seltsam ... scheint fast wie numpy die Saiten als Arrays oder etwas behandelt ... Was ist, wenn Sie setzen geschieht ein Komma zwischen den 2 schließenden eckigen Klammern? – karina

Antwort

2

Probieren Sie verschiedene Zeichenfolgen:

np.array([[QString('hello'), QString('moon')]], dtype=object)`. 

oder der Ansatz erstellen und füllen mit diesen Objekten ein Objekt-Array zu machen

A = np.empty((1,2), dtype=object) 
A[:] = [QString('hello'), QString('moon')] 

Ich bin nicht vertraut, aber in anderen Fällen wo wir versuchen, Objekt-Arrays aus Listen zu erstellen, ist es schwierig, wenn die Listen die gleiche Länge haben. Wenn QString iterierbar ist, kann mit einem .__len__ etwas ähnliches passieren.

Ich rate dein erstes Beispiel funktioniert, weil auf QString ist kürzer als die anderen, nicht, weil es 2x2 ist.

Diese letzte Frage über ein Objekt-Array aus einem Benutzerwörterbuch-Klasse machen kann relevant sein: Override a dict with numpy support

+0

Es ist wahr, ich habe das erste Beispiel versucht und schlägt fehl, wenn die Längen identisch sind! Guter Link, vielleicht die Ursache des Problems ist es mit http://stackoverflow.com/a/36666424/2270217 verwandt, aber ich denke, dass Ihre Lösung für mich ist es genug Vielen Dank! –

Verwandte Themen