更改 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.]])
假设我在 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.]])