2013-04-29 95 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