Python 3.x numpy数组在更改值后显示相同的id 我已经创建了2个numpy阵列。 原创的 克隆的
克隆是原始数组的副本。我更改了克隆数组中的一个元素。我正在使用is关键字检查Python 3.x numpy数组在更改值后显示相同的id 我已经创建了2个numpy阵列。 原创的 克隆的,python-3.x,numpy,Python 3.x,Numpy,克隆是原始数组的副本。我更改了克隆数组中的一个元素。我正在使用is关键字检查原始和克隆数组的id。它返回false。但当我打印这两个元素的id时,它是相同的 我知道-5到256之间的数字在python中存储在同一地址。但在这里,我将值更改为400(>256)。它仍然显示相同的id。为什么 如果我错了,请纠正我。我是numpy阵列的新手 import numpy as np original = np.array([ [1, 2, 3, 4, 5], [6, 7, 9, 10,
原始
和克隆
数组的id。它返回false
。但当我打印这两个元素的id时,它是相同的
我知道-5到256之间的数字在python中存储在同一地址。但在这里,我将值更改为400(>256)。它仍然显示相同的id。为什么
如果我错了,请纠正我。我是numpy阵列的新手
import numpy as np
original = np.array([
[1, 2, 3, 4, 5],
[6, 7, 9, 10, 11]
])
# Copying array "original" to "cloned"
cloned = original.copy()
# Changing first element of Cloned Array
cloned[0, 1] = 400
print(id(cloned[0, 1]))
print(id(original[0, 1]))
print(id(cloned[0, 1]) is id(original[0, 1]))
输出:
140132171232408
id相同
140132171232408
id相同
假的
is返回false,尽管id相同
关键字用于测试两个变量是否引用同一对象,而不是检查它们是否相等。使用==代替,如下所示:
print(id(cloned[0, 1]) == id(original[0, 1]))
# Returns True
显然,id()函数返回相同的值,但不同的对象,因此使用is运算符不起作用。使用is关键字来测试两个变量是否引用相同的对象,而不是检查它们是否相等。使用==代替,如下所示:
print(id(cloned[0, 1]) == id(original[0, 1]))
# Returns True
显然,id()函数返回相同的值,但不同的对象,因此使用is运算符不起作用。我的部分已解决问题已解决。谢谢你。我的另一个问题是为什么
id
是相同的?虽然400和2是两个不同的值,但我的部分已解决。谢谢你。我的另一个问题是为什么id
是相同的?虽然400和2是两个不同的值。original[0,1]
是动态创建的numpy对象,用于显示该插槽的值。它不是值,也不是数组中的位置。因此,它的id
不会告诉您任何有用的东西,请参见我对原始[0,1]
的回答,它是动态创建的numpy对象,用于显示该插槽的值。它不是值,也不是数组中的位置。所以它的id
不会告诉你任何有用的东西,请参阅我的答案