Python 3.x numpy数组在更改值后显示相同的id 我已经创建了2个numpy阵列。 原创的 克隆的

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,

克隆是原始数组的副本。我更改了克隆数组中的一个元素。我正在使用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, 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
不会告诉你任何有用的东西,请参阅我的答案