我已经使用numpy
有一段时间了,但我遇到了一个我没有完全理解的问题:
a = np.ones(20)
b = np.zeros(10)
print(id(a)==id(b)) # prints False
print(id(a), id(b)) # prints (4591424976, 4590843504)
print(id(a[0])==id(b[0])) # prints True
print(id(a[0]), id(b[0])) # prints (4588947064, 4588947064)
print(id(a[0])) # 4588947184
print(id(b[0])) # 4588947280
请问有人能解释一下最后四个打印语句中观察到的行为吗?同时,我知道id
会给你分配在内存中实际的唯一对象标识符,但是每次运行最后两个打印语句时,我得到了不同的id
值。这是预期的行为吗?
id(a[0])
并没有提供有用的信息。a
既不是列表,也不是对象数据类型数组,a[0]
是一个值,而不是数组中唯一的对象。换句话说,每次进行[0]
索引时,numpy
都会创建一个新的包含该值的np.float
对象。 - hpaulj