如何在numpy中修改/更新数组而不更改原始数组

如何在numpy中修改/更新数组而不更改原始数组,numpy,Numpy,有一个Numpy操作可以做到这一点吗 a = np.array([1,2,3]) b = np.some_update_method(a, 0, 99) # b is array([99, 2, 3]), a is unchanged. 在J中,这被称为“修正”,但我不知道它在Numpy中可能被称为什么(如果存在)。您可以复制原始数组,然后修改它: b = a.copy() b[0] = 99 b # [99 2 3] a # [1 2 3] 您可以制作原始阵列的副本,然后在位修改它

有一个Numpy操作可以做到这一点吗

a = np.array([1,2,3])
b = np.some_update_method(a, 0, 99) # b is array([99, 2, 3]), a is unchanged.

在J中,这被称为“修正”,但我不知道它在Numpy中可能被称为什么(如果存在)。

您可以复制原始数组,然后修改它:

b = a.copy()
b[0] = 99

b
# [99  2  3]

a
# [1 2 3]

您可以制作原始阵列的副本,然后在位修改它:

b = a.copy()
b[0] = 99

b
# [99  2  3]

a
# [1 2 3]

导入
copy
并使用
deepcopy

导入副本
a=np.数组([1,2,3])
b=复制。深度复制(a)
#修改b

您可以使用just
copy
保持原始元素不变(复制的元素将被引用并依赖于原始列表),
deepcopy
将保持每个对象完全独立,但是要使用两倍的内存和任何时间来复制对象。

导入
copy
并使用
deepcopy

导入副本
a=np.数组([1,2,3])
b=复制。深度复制(a)
#修改b

您可以使用just
copy
保持原始元素不变(复制的元素将被引用并依赖于原始列表),
deepcopy
将保持每个对象完全独立,但要使用两倍的内存和任何时间来复制对象。

deepcopy
仅当数组是
object
dtype时才需要。对于常规数字数据类型,它只执行
copy
方法
object
dtype数组类似于列表,包含引用。了解何时使用deepcopy很好。只有当数组是
object
dtype时才需要
deepcopy
。对于常规数字数据类型,它只执行
copy
方法
object
dtype数组类似于列表,包含引用。很高兴知道何时使用deepcopy。对Numpy没有函数修正感到失望,但我可以将其封装在函数中,这样就可以解决我的问题。谢谢对Numpy没有函数修正感到失望,但我可以将其封装在函数中,这样就可以解决我的问题。谢谢