2016-11-12 4 views
0

Ich habe ein N x N Numpy-Array. Ich muss die i-te Spalte auf besondere Weise manipulieren, und die restlichen Spalten auf eine andere, aber gebräuchliche Weise. Wie mache ich das auf eine numptonische Weise? Der Parameter i wird an die zu verwendende Funktion übergeben.Numpy Alle bis auf eine Spalte manipulieren

Beispiel:

a=np.zeros([4,4]) 

Nun müssen wir 1., 2. und 4., sagt weise Element wird im Quadrat. 3. Element, das elementweise gewürfelt werden soll.

+0

Was haben Sie versucht, so weit? –

+0

Es ist unmöglich zu antworten, es sei denn, Sie zeigen uns * wie * Sie erwarten, dass das Array manipuliert wird. Bitte geben Sie ein Beispiel an. –

+0

hinzugefügt ein Beispiel @ajcr – Thiagarajan

Antwort

1
most_of_the_result = do_whatever(numpy.delete(arr, col_index, axis=1)) 
insertion_column = do_other_thing(arr[:, col_index]) 

result = numpy.insert(most_of_the_result, col_index, insertion_column, axis=1) 

oder

result = do_whatever(arr) 
special_column = do_other_thing(arr[:, col_index]) 
result[:, col_index] = special_column 
0

Sie können eine Reihe von Zahlen verwenden, um die Spalten auszuwählen, die Sie bearbeiten möchten. Zum Beispiel könnten Sie sagen:

a[:,(0,1,3)] = a[:,(0,1,3)]**2 

Spalte Platz 1, 2 und 4. Denken Sie daran, sie von Null indiziert sind.

Allgemeiner wenn Sie alle, aber Spalte X manipulieren wollen, dann könnten Sie

sel = range(a.shape[1]) 
sel.remove(X) 
a[:, sel] = a[:, sel]**2 
+0

Array ist sehr groß, und die Spalte nicht ausgewählt wird als Parameter übergeben – Thiagarajan

+0

Nun, das sind einige neue Informationen. Können Sie das Set nicht als Parameter übergeben? Nehmen wir an, Sie möchten die Spalte 'X' entfernen, dann können Sie etwas wie' sel = range (N) ', dann' sel.remove (X) 'machen. Wo ist "N" die große Anzahl von Spalten? –

0

Da 0s einem Potenzieren 0 ist noch, lassen Sie uns 2s verwenden.

import numpy as np 
a = np.full((4, 4), 2.0) 
a[:, 2] = a[:, 2]**3 
ci = [i for i in range(a.shape[1]) if i != 2] 
a[:, ci] = a[:, ci]**2 
Verwandte Themen