关于ndarray的问题
课程设计
1
import numpy as np
aa=np.array([1,2])
aa.data
Out[278]: <memory at 0x000001BED39961C0>
id(aa[0])
Out[279]: 1919105783888
id(aa[0])
Out[280]: 1919105781968
id(aa.data[0])
Out[281]: 140709382463232
id(aa.data[0])
Out[282]: 140709382463232
aa.__array_interface__['data'][0]
Out[283]: 1919049863168
我有3个问题:
- aa.data的值 0x000001BED39961C0是数据所在内存地址吗?
- 为什么两次输出id(aa[0])的结果不一样,而同样两次输出id(aa.data[0])结果却是相同的?
- id(aa.data[0])和aa. array_interface ['data'][0]的值为什么不一样?
-
1、aa.data的值 0x000001BED39961C0是数据所在内存地址 2、为什么数组元素的ID不断变化?在IPython中,每个用户输入都存储在历史记录中,在 print 之间创建对象,使得 aa[0] 对象不太可能放置在相同的内存地址。 也就是说,在IPython中一次执行两次打印时,两个对象的ID相同;但每次执行此操作时,ID不同,因为每次通过索引访问 ndarray 内部时,都会动态创建一个新的内存(缓冲区),所以两次输出id(aa[0])的结果不一样
-
我猜想 , 应该是每次调用aa.data或者 aa[0]的时候, np 都重新生成数据。 变量 aa入口是不变的。
发表回复