2013-04-29 54 views
11

多個切片在Matlab中,你可以分配一個值同一列表的多個片:值分配給在numpy的

>> a = 1:10 

a = 

    1  2  3  4  5  6  7  8  9 10 

>> a([1:3,7:9]) = 10 

a = 

    10 10 10  4  5  6 10 10 10 10 

你怎麼能與numpy的數組做到這一點在Python?

>>> a = np.arange(10) 

>>> a 
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

>>> a[1:3,7:9] = 10 
IndexError: too many indices 
+0

爲什麼你可能想在一個語句中做而不是在兩個語句中做它的任何原因? – 2013-04-29 15:54:15

+1

@SukritKalra我不能爲問題作者說話,但是一個例子就是當人們試圖從這樣一個多重切片中形成一個列表理解(這就是我想要做的以及爲什麼我來到這個問題) – Pyderman 2016-05-17 18:29:35

回答

7
a = np.arange(10) 
a[[range(3)+range(6,9)]] = 10 
#or a[[0,1,2,6,7,8]] = 10 

print a 

應該工作我想......我不知道它很想要但

+0

這可以是沒有NumPy實現? – Pyderman 2016-05-17 18:34:09

+0

當然不如優雅... – 2016-05-17 20:08:20

+0

的確。 NumPy是真正的單行者之王。 – Pyderman 2016-05-18 00:03:17