Назначить второй элемент в паре на вектор - PullRequest
0 голосов
/ 21 февраля 2020

Я совершаю простую ошибку или это ошибка? Попытка присвоить первый и второй элемент пары отдельным векторам в 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 Ответ

2 голосов
/ 21 февраля 2020

Вам необходимо присвоить pxvec и pyvec копиям srange, в противном случае каждое изменение, которое вы внесете в pxvec, также будет выполнено в pyvec и srange (это называется копированием по ссылке, если Вы хотите посмотреть это)

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

И затем вы можете продолжить с кода, который вы предоставили

...