2014-11-20 17 views
8

Wenn ich ein NumPy-Array habe, zum Beispiel 5x3, gibt es eine Möglichkeit, es Spalte für Spalte auf einmal zu entpacken, um es an eine Funktion zu übergeben: ?NumPy-Array nach Spalte entpacken

Ein bisschen wie *args für Liste entpacken, aber nach Spalte.

+0

'np.hsplit (x, x.shape [1]), was' –

Antwort

12

Sie die Transponierung des Arrays, um entpacken können die Spalten für Ihre Funktionsargumente zu verwenden:

my_func(*arr.T) 

Hier ist ein einfaches Beispiel:

>>> x = np.arange(15).reshape(5, 3) 
array([[ 0, 5, 10], 
     [ 1, 6, 11], 
     [ 2, 7, 12], 
     [ 3, 8, 13], 
     [ 4, 9, 14]]) 

Lassen Sie uns eine Funktion schreiben, die Spalten hinzufügen zusammen (in der Regel mit x.sum(axis=1) in NumPy getan):

def add_cols(a, b, c): 
    return a+b+c 

Dann wir have:

NumPy-Arrays werden entlang der ersten Dimension ausgepackt, daher muss das Array transponiert werden.

+0

Genau brauchte ich! Vielen Dank! EDIT: Entschuldigung, ich kann noch nicht upvote ... –

+0

Kein Problem, froh, dass es geholfen hat! –

3

numpy.split teilt ein Array in mehrere Sub-Arrays auf. In Ihrem Fall ist indices_or_sections 3, da Sie 3 Spalten haben, und axis = 1, da wir Spalten spalten.

my_func(numpy.split(array, 3, 1))