numpy-array-Verkettung Fehler: 0-d arrays können nicht verkettet werden
Ich versuche zu verketten von zwei numpy-arrays, aber ich habe diesen Fehler. Könnte jemand mir ein bisschen Ahnung, was das eigentlich bedeutet?
Import numpy as np
allValues = np.arange(-1, 1, 0.5)
tmp = np.concatenate(allValues, np.array([30], float))
Dann bekam ich
ValueError: 0-d arrays can't be concatenated
Wenn ich
tmp = np.concatenate(allValues, np.array([50], float))
Es gibt keine Fehler Meldung, aber die tmp-variable, spiegeln nicht die Verkettung entweder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie legen Sie die arrays, die Sie verketten möchten in eine Sequenz (in der Regel ein Tupel oder eine Liste), in das argument.
Überprüfen Sie die Dokumentation für
np.concatenate
. Beachten Sie, dass das erste argument ist eine Folge (z.B. Liste, Tupel) des arrays. Es tut nicht nehmen Sie als separate Argumente.Soweit ich weiß, diese API wird von allen geteilt von numpy ist die Verkettung von Funktionen:
verketten
,hstack
,vstack
,dstack
, undcolumn_stack
alle einen einzigen Haupt-argument sollte eine Sequenz von arrays.Der Grund, warum Sie immer diesen bestimmten Fehler ist, dass die arrays sind Sequenzen als gut. Das aber bedeutet, dass
concatenate
ist die InterpretationallValues
als eine Sequenz von arrays zu verketten. Jedoch, jedes element vonallValues
ist ein float-statt ein array, und daher wird interpretiert als ein null-dimensionales array. Wie der Fehler sagt, diese "arrays" können nicht verkettet werden.Das zweite argument ist als die zweite (optionale) argument von
concatenate
, das ist die Achse zu verketten auf. Das funktioniert nur, weil es ist ein einzelnes element in der zweiten argument, das gewirkt werden kann, als eine ganze Zahl, und daher ist ein Gültiger Wert. Wenn Sie bereits ein array mit mehreren Elementen, die im zweiten argument, Sie hätten eine andere Fehlermeldung:Auch sicherstellen, dass Sie die Verkettung von zwei numpy-arrays. Ich war eine Verkettung python-numpy-array mit einem array und es gab mir den gleichen Fehler:
Es hat einige Zeit gedauert, dies herauszufinden, da alle Antworten bei stackoverflow wurden unter der Annahme, dass Sie hatte zwei numpy-arrays.
Ziemlich dumm, aber leicht zu übersehende Fehler. Daher ist die Buchung nur für den Fall, das jemand hilft.
Hier sind die links zum konvertieren eines vorhandenen python-array mit np.asarray
oder
erstellen Sie np-arrays, wenn es hilft.
Einen anderen Weg, um diese Fehler zu haben, zwei numpy Objekte von verschiedenen Typen...?
Ich bekomme diese Fehlermeldung, wenn ich versuche
np.concatenate([A,B])
sowie
ValueError: all the input arrays must have same number of dimensions
wenn ichnp.concatenate([B,A])
Genauso wie @mithunpaul erwähnt, meine Typen sind aus: A ist ein array von 44279x204 und B ist ein
<44279x12 sparse matrix of type '<class 'numpy.float64'>' with 88558 stored elements in Compressed Sparse Row format>)
So, dass ist der Grund, warum der Fehler passiert ist. Weiß nicht, wie es zu lösen allerdings noch nicht.
np.concatenate([B.todense(),A])
. Wenn beide sind spärlich, dann.todense()
Sie beide.