python - 如何在不更改原始数组的情况下操作数组的副本?

标签 python arrays numpy

<分区>

我有一个名为 n 的数组,其中包含数字,我的目标是创建一个数组 m,其中 m[i] = n[i] - n[i-1]。 m[0] 正好等于 n[0]。我试过这个:

import numpy as np
n = np.array([1,2,3,4])
m = n
for i in range(1, len(n)):
    m[i] = n[i] - n[i-1]

for 循环中的赋值做了一些我不明白的事情,因为它将 n 和 m 都变成了数组 = [1 1 2 2]。我只是想更改 m 中的输入。

注意:当我像这样严格初始化 n 和 m 时,我的代码会按照我想要的方式执行:

n = np.array([1,2,3,4])
m = np.array([1,2,3,4])

但我觉得我应该能够制作 n 的副本并且只能操作该副本。有什么建议或帮助吗?

最佳答案

通过执行 m = n,您只需将新名称 m 绑定(bind)到名为 n 的现有数组。这就是为什么当您稍后对 m 进行更改时,您会看到相同的更改应用于 n。它们都引用内存中的同一个对象。

要复制数组,您应该使用 numpy.copy() 方法:

m = np.copy(n)

关于python - 如何在不更改原始数组的情况下操作数组的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66154938/

相关文章:

python - 我应该为Python中的数组类型烦恼吗?

python - 如何使用python为ppt中的图片添加超链接

javascript - 在javascript中展平嵌套对象

javascript - 这段代码如何在数组中搜索多个值?

python - 什么是numpy等效于random.sample?

python - 返回单元素 Numpy 数组的简洁方法

python - Django嵌套Transaction.atomic不回滚

python - 如何使用 Python 退出通过 GeckoDriver 和 Selenium 启动的所有 Firefox 进程

python - 在 Windows 7 下从 python 启动时找不到 R 包

python - pandas - 使用 for 循环将多列附加到数据框