将成对的第二个元素分配给向量

时间:2020-02-21 03:38:30

标签: python numpy vector assign

我犯了一个简单的错误,还是一个错误?试图在Python Numpy中将一对的第一个和第二个元素分配给单独的向量,但是在所有情况下,第二个元素都被分配给两个向量。 所需的输出:sol[0]pxvec[i]相同。

srange = np.linspace(0, 0.7, 10)
pxvec = srange 
pyvec = srange 
pindex = 0

for i in srange: 
    sol=[i,i+1]
    print(sol[0],sol[1])
    pxvec[pindex]=sol[0]
    pyvec[pindex]=sol[1]
    print(pxvec[pindex],pyvec[pindex])
    pindex=pindex+1

我得到的输出:

0.0 1.0
1.0 1.0
0.07777777777777778 1.0777777777777777
1.0777777777777777 1.0777777777777777
0.15555555555555556 1.1555555555555554
1.1555555555555554 1.1555555555555554
0.23333333333333334 1.2333333333333334
1.2333333333333334 1.2333333333333334
0.3111111111111111 1.3111111111111111
1.3111111111111111 1.3111111111111111
0.3888888888888889 1.3888888888888888
1.3888888888888888 1.3888888888888888
0.4666666666666667 1.4666666666666668
1.4666666666666668 1.4666666666666668
0.5444444444444445 1.5444444444444445
1.5444444444444445 1.5444444444444445
0.6222222222222222 1.6222222222222222
1.6222222222222222 1.6222222222222222
0.7 1.7
1.7 1.7

1 个答案:

答案 0 :(得分:2)

您需要将pxvecpyvec分配给srange的副本,否则对pxvec所做的每项更改也将同时对pyvecsrange(如果您要查找的话,称为引用复制)

srange = np.linspace(0, 0.7, 10)
pxvec = srange.copy()
pyvec = srange.copy()

然后您可以继续提供的代码