2016-11-22 40 views
0

我有一個3-dim數組[行] [cols] [3],其值介於0和X之間。 我需要操作特定的維度在數組中。所以,我已經採取了我想要操縱iPython numpy - 如何使用地圖更改數組切片的值

arr_slice =陣列的部分切片[:,:,0]

現在我可以做一些操作像arr_slice * = 3,這將改變原來的數組,正如我打算的那樣。

但是,我需要根據映射更改值,該映射是一個大小爲X的數組,將slice(0-X)的值映射到新值。地圖稱爲映射

,所以我知道映射[arr_slice]會做我想做的,但使用它是這樣的: arr_slice =映射[arr_slice] 當然會改變的只有arr_slice而不是原來的數組我有。

那麼,如何執行此任務來更改原始數組?

的數組實際上是一個形象,我試圖操縱它的Y值在YIQ格式:

im_eq = np.copy(im_orig) 

if (rgb): 
    im_eq = rgb2yiq(im_eq) 
    im = im_eq[:,:,0] 
else: 
    im = im_eq 

mapping = get_cumutative_histogram(im) 
im = mapping[im.astype(int)] # the problematic line 
+0

添加一個案例? – Divakar

回答

2

你需要解決的切片元素:

im[:] = mapping[im.astype(int)] 

例如:

from pylab import * 
a = rand(10) 
sl = a[4:9] 
print sl # ->: array([ 0.97278179, 0.7894741 , 0.38051133, 0.42684762, 0.82670638]) 

sl[:] = 1 
print a #-> array([ 0.21125781, 0.4235981 , 0.81950229, 0.93937973, 1.  , 1.  , 1.  , 1.  , 1.  , 0.39047808]) 
+0

謝謝,這正是我所尋找的 – Yoavhayun