如何将数组的前N个元素设置为零?

use*_*201 13 python arrays numpy

我有一个很长的阵列:

x= ([2, 5, 4, 7, ...])
Run Code Online (Sandbox Code Playgroud)

我需要将第一个N元素设置为0.因此N = 2,所需的输出将是:

x = ([0, 0, 4, 7, ...])
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法在Python中执行此操作?一些numpy功能?

syn*_*nym 22

纯蟒蛇:

x[:n] = [0] * n
Run Code Online (Sandbox Code Playgroud)

与numpy:

y = numpy.array(x)
y[:n] = 0
Run Code Online (Sandbox Code Playgroud)

还指出,x[:n] = 0,如果工作x是一个Python列表(而不是numpy的阵列).

使用[{some object here}] * n任何可变的东西也是一个坏主意,因为列表不会包含n个不同的对象,但是对同一个对象的n个引用:

>>> a = [[],[],[],[]]
>>> a[0:2] = [["a"]] * 2
>>> a
[['a'], ['a'], [], []]
>>> a[0].append("b")
>>> a
[['a', 'b'], ['a', 'b'], [], []]
Run Code Online (Sandbox Code Playgroud)

  • 注意,`0`是默认的`start`,因此是多余的. (5认同)

jho*_*ken 5

只需明确设置它们即可:

x[0:2] = 0
Run Code Online (Sandbox Code Playgroud)

  • 我们在这里讨论的是 numpy。这有效,我在控制台中检查了它。 (3认同)