2017-01-30 75 views
1

所以我有一個例子陣列,說:減去numpy的陣列由

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

我想要做的就是隻從第二列減去一個數,說10例如。我希望什麼有輸出的樣子是這樣的:

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

我一直在使用np.subtract嘗試,但它不支持沿着軸線相減(至少據我所知)。

+2

您似乎有一個3D陣列。你打算是3D嗎?長度爲1的維度和對「列」的引用表明您可能打算擁有2D。 – user2357112

回答

3

切片和減去 -

a[...,1] -= 10 

這將工作任意維數的數組從第二塔中減去。

採樣運行 -

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

謝謝。這個解決方案正是我所需要的。 –

2

請在指定索引就地減法(在這種情況下,我的索引整個列):

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

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

np.subtract同樣工作在指定out

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