Wie bekomme ich ein Array von alternierenden Werten in Python?

7

Einfache Frage hier:

Ich versuche, ein Array zu erhalten, das die Werte (1, -1, 1, -1, ...) für eine gegebene Länge wechselt. np.repeat gibt mir einfach (1, 1, 1, 1, -1, -1, -1, -1). Gedanken?

    
mike 22.08.2011, 23:22
quelle

7 Antworten

14

Ich mag @ Benjamins Lösung. Eine Alternative ist jedoch:

%Vor%

Dies ermöglicht auch Listen mit ungerader Länge.

BEARBEITEN: Auch nur um Geschwindigkeiten zu erfassen, für ein Array von 10000 Elementen

%Vor%

Ergebnisse in Zeiten von:

%Vor%

Wenn N = 100 , fangen die Dinge an auszugleichen, aber mit den leeren numpy Arrays zu beginnen, ist immer noch bedeutend schneller ( nl geändert zu 10000)

%Vor%

Numpy-Arrays sind spezielle tolle Objekte und sollten nicht wie Python-Listen behandelt werden.

    
JoshAdel 22.08.2011, 23:56
quelle
7

verwende Größe ():

%Vor%

kann Array mit ungerader Länge erzeugen:

%Vor%     
HYRY 23.08.2011 02:39
quelle
6

Verwenden Sie numpy.tile !

%Vor%     
Benjamin 22.08.2011 23:28
quelle
4

verwende Multiplikation:

%Vor%     
Foo Bah 22.08.2011 23:28
quelle
3

Wenn Sie eine speichereffiziente Lösung wünschen, versuchen Sie Folgendes:

%Vor%

Dann können Sie über die Antworten wie folgt iterieren:

%Vor%     
Kristoff vdH 22.08.2011 23:32
quelle
2

Vielleicht suchen Sie nach itertools.cycle?

%Vor%     
PabloG 22.08.2011 23:33
quelle
0

Ich werfe diese hier raus, weil sie unter bestimmten Umständen nützlicher sein könnten.

Wenn Sie nur zwischen positiv und negativ wechseln möchten:

%Vor%

oder für eine allgemeinere Lösung

%Vor%     
machine yearning 22.08.2011 23:48
quelle

Tags und Links