在numpy中为多个切片分配值

12
在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 = 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

你为什么想要用一条语句来完成,而不是用两条语句来完成呢? - Sukrit Kalra
1
@SukritKalra 我不能代表问题的提出者,但一个例子是当一个人试图从这样的多维切片中形成一个列表理解式(这就是我正在尝试做的事情,也是我提出这个问题的原因)。 - Pyderman
3个回答

17

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

print a

我认为应该可以工作……不过我不确定这是否完全符合你的要求。


这可以在没有 NumPy 的情况下实现吗? - Pyderman
确实。NumPy 是一行代码之王。 - Pyderman

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接