【发布时间】:2021-07-31 06:22:36
【问题描述】:
a = [5,6,7,8]
print('for list:')
for i in a:
print((id(i)))
import numpy as np
z = np.array([9,10,11,12])
print('for numpy:')
for i in z:
print((id(i)))
注意:当我试图查看列表中值的内存地址时,它需要 32 位的连续内存。但是当我将列表转换为 Numpy 数组并打印值的地址时,备用值采用相同的内存地址。我不明白为什么会这样?
output:
for list:
94620302609024
94620302609056
94620302609088
94620302609120
for numpy:
139853895184240
139853895279216
139853895184240
139853895279216
正如您所见,对于 numpy 数组,备用值的内存地址是相同的。 请解释一下为什么会这样?
【问题讨论】:
-
你检查stackoverflow.com/questions/40196986/numpy-arrays-changing-id了吗?以下是要考虑的重要点
In contrast to a list, values of an array are stored as bytes in a databuffer和In general, id is not useful when working with arrays最重要的是id指向 cpython 中的内存位置 -
不是
machine-learning问题,请不要向无关标签发送垃圾邮件(已删除)。