Python 为numpy中的多个切片赋值
在Matlab中,可以为同一列表的多个切片指定一个值:Python 为numpy中的多个切片赋值,python,arrays,matlab,numpy,slice,Python,Arrays,Matlab,Numpy,Slice,在Matlab中,可以为同一列表的多个切片指定一个值: >> 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 如何在Python中使用numpy数组实现这一点 >>> a =
>> 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
如何在Python中使用numpy数组实现这一点
>>> 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
那应该行的,我想。。。我不知道它是你想要的,但是 你也可以考虑使用<代码> NP.R.: 来自(部分“索引数组”)。请注意,所需切片的索引应包含在“np.array()”中
有什么理由让你想在一个语句中而不是在两个语句中完成它吗?@Sukritkalla我不能代表问题作者说话,但一个例子是,当一个人试图从这样一个多层结构中形成一个列表理解时(这就是我试图做的,也是我为什么得出这个问题的原因)没有NumPy,这能实现吗?的确。努比是真正的独行侠之王。
a = np.arange(10)
a[[range(3)+range(6,9)]] = 10
#or a[[0,1,2,6,7,8]] = 10
print a
ii = np.r_[0:3,7:10]
a[ii] = 10
In [11]: a
Out[11]: array([ 10, 10, 10, 3, 4, 5, 6, 10, 10, 10])
>>> x = np.arange(10,1,-1)
>>> x
array([10, 9, 8, 7, 6, 5, 4, 3, 2])
>>> x[np.array([3, 3, 1, 8])]
array([7, 7, 9, 2])