gpt4 book ai didi

python - 数组的赋值会改变数组本身

转载 作者:行者123 更新时间:2023-12-01 04:35:04 24 4
gpt4 key购买 nike

将一个数组中的值分配给另一个数组时,右侧的数组会发生变化。你能指出我可能犯的错误吗?

下面的代码找到最长的递增序列,但最后一行 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]

最佳答案

正如您在 numpy guide 中所读到的那样:

All arrays generated by basic slicing are always views of the original array.

这意味着 yyy 基本上是同一底层数据结构的不同 View 。因此,当您更改第一个时,您也会更改第二个,反之亦然。

最简单的方法是在切片后复制数组,转动以下行:

yy = y[-2:]

进入:

yy = y[-2:].copy()

关于python - 数组的赋值会改变数组本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com