为什么会这样

import numpy as np

a = np.array([[1,2,3],[4,5,6]])
a_old = a[0]
a[0] = a[0] + np.array([1,1,1])
print(a[0] - a_old)

[0 0 0]

而不是

[1 1 1]

? 但另一方面

b = 2
b_old = b
b = b + 1
print(b - b_old)

给s indeed

1

正如我所料.我认为给np赋值是有区别的.数组元素,并为变量赋值.但我不太明白.谢谢你的帮助!

推荐答案

这在numpy中可能很棘手!这是因为当你们做a_old = a[0]时,你们在a中创建了view个数据,而不是数据的副本.引用numpy indexing documentation:

必须注意的是,返回的数组是一个视图,即它不是原始数组的副本,而是指向内存中与原始数组相同的值.

因此,当您添加到原始数组:a[0] = a[0] + np.array([1,1,1])时,a_old的"值"也会发生变化,因为a_old指向内存中的同一位置.如果要创建副本,只需编辑代码:

a_old = a[0].copy()

在浮点示例中,b_old = bb的值复制到内存中的新点,因此可以在不影响彼此的情况下更改bb_old.

Python相关问答推荐

PYTHON、VLC、RTSP.屏幕截图不起作用

不允许 Select 北极滚动?

在极点中读取、扫描和接收有什么不同?

如何在Python中自动创建数字文件夹和正在进行的文件夹?

Pandas:计数器的滚动和,复位

Django更新视图未更新

使用美汤对维基百科表格进行网络刮擦未返回任何内容

根据边界点的属性将图划分为子图

Networkx中K-Shell最核心的 node

try 第二次训练新的JAX+Equinox模型时,具有多个元素的数组的真值不明确(&Q)

如何从matplotlib中的Splter()中获取 colored颜色 条或图例?

查找一个数据帧中另一个数据帧的值的索引

编撰词典的功能

根据来自数据帧的特定迭代数合并数据帧

从单个RBG图片开始创建12个多通道图像

Lambda调用未处理,3秒后超时?

用Arpeggio解析单行和多行注释

在多级列中,对特定较低级别的类别重新排序

future 对大Pandas 群居的警告

将DF转换为特定的对象 struct