更改 Python 中向量交替行的值

Changing the value of alternated rows of a vector in Python

假设我在 python 中有以下 NumPy 数组:

V = 2*np.ones([7,1]); V[0]=1; V[6]=1

哪个会给我:

V = ([[1.],
      [2.],
      [2.],
      [2.],
      [2.],
      [2.],
      [1.],])

如何只更改索引为奇数的术语?例如,将第 1、3 和 5 行的项更改为 4(将第一个算作第 0 行),如下所示:

V = ([[1.],
      [4.],
      [2.],
      [4.],
      [2.],
      [4.],
      [1.],])

有没有比开始循环并逐个检查每个元素更简单的方法?在这个问题中,我采用了 7x1 列向量,但我想解决 Nx1 数组的一般情况。提前致谢!

您可以简单地使用像

这样的切片运算符
V[1::2] = 4

这意味着从第二个条目 1 开始,然后从那里开始步进 2。

您可以在 V 上使用 enumerate():

for i,j in enumerate(V):
    if i % 2 == 1:
        V[i] = 4

输出:

array([[1.],
       [4.],
       [2.],
       [4.],
       [2.],
       [4.],
       [1.]])