将数组中的值分配给另一个数组时,右侧的数组会发生变化。你能否指出我可能犯的错误?
下面的代码找到了最长的序列,我遇到了最后一行yy[-1] = y[n]
的问题。每当这一行执行时,y中的值也会改变。
import numpy as np
p = np.array([466, 5500, 2615, 4056, 2196, 4254, 2987, 5125, 1060, 7344, 2990])
y = p.argsort()
yy = y[-2:]
yy = yy[::-1]
n = len(y)-2
while(n>0):
n = n-1
if (y[n] < yy[-1]):
yy = np.append(yy,y[n])
if ((y[n] > yy[-1]) & (y[n] < yy[-2])):
yy[-1] = y[n]
答案 0 :(得分:2)
您可以阅读numpy guide:
基本切片生成的所有数组始终是原始数组的视图。
这意味着y
和yy
基本上是相同底层数据结构的不同视图。因此,当您更改第一个时,您也会更改第二个,反之亦然。
最简单的方法是在切片后复制数组,转动以下行:
yy = y[-2:]
成:
yy = y[-2:].copy()