2017-01-30 4 views
1

So habe ich ein Beispiel Array, sagen:subtrahieren Numpy Array von Spalten

import numpy as np 
np.array([[[ 85, 723]], 
      [[ 86, 722]], 
      [[ 87, 722]], 
      [[ 89, 724]], 
      [[ 88, 725]], 
      [[ 87, 725]]]) 

Was will ich nur von der zweiten Spalte eine Zahl tun subtrahieren, sagen 10 zum Beispiel. Was ich hoffe, dass die Ausgabe Blick haben, wie so etwas wie dieses:

np.array([[[ 85, 713]], 
      [[ 86, 712]], 
      [[ 87, 712]], 
      [[ 89, 714]], 
      [[ 88, 715]], 
      [[ 87, 715]]]) 

ich versucht habe, mit np.subtract, aber nicht Subtraktion entlang einer Achse (zumindest meines Wissens) unterstützen.

+2

Sie scheinen ein 3D-Array zu haben. Hast du vor, 3D zu haben? Die Länge-1-Dimension und der Verweis auf "Spalten" deuten darauf hin, dass Sie beabsichtigen, etwas 2D zu haben. – user2357112

Antwort

3

Scheibe und subtrahieren -

a[...,1] -= 10 

Dies würde für Arrays einer beliebigen Anzahl von Dimensionen arbeiten, von der zweiten Kolonne zu subtrahieren.

Probelauf -

In [582]: a 
Out[582]: 
array([[[30, 23]], 

     [[36, 88]], 

     [[27, 15]], 

     [[38, 61]], 

     [[79, 14]]]) 

In [583]: a[...,1] -= 10 

In [584]: a 
Out[584]: 
array([[[30, 13]], 

     [[36, 78]], 

     [[27, 5]], 

     [[38, 51]], 

     [[79, 4]]]) 
+0

Vielen Dank. Diese Lösung ist genau das, was ich brauchte. –

2

Haben Sie eine direkte Subtraktion auf dem angegebenen Index (in diesem Fall ich Index die gesamte Spalte):

>>> arr[:, :, 1] -= 10 

>>> arr 
array([[[ 85, 713]], 
     [[ 86, 712]], 
     [[ 87, 712]], 
     [[ 89, 714]], 
     [[ 88, 715]], 
     [[ 87, 715]]]) 

arbeitet auch mit np.subtract wenn Sie out angeben :

>>> np.subtract(arr[:, :, 1], 10, out=arr[:, :, 1]) 
Verwandte Themen