weixin_40229805 2022-01-20 15:20 采纳率: 100%
浏览 67
已结题

关于ndarray的问题

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个问题:

  1. aa.data的值 0x000001BED39961C0是数据所在内存地址吗?
  2. 为什么两次输出id(aa[0])的结果不一样,而同样两次输出id(aa.data[0])结果却是相同的?
  3. id(aa.data[0])和aa.array_interface['data'][0]的值为什么不一样?
  • 写回答

6条回答 默认 最新

  • Love And Program 人工智能领域新星创作者 2022-01-21 10:16
    关注

    只有aa.data[0]列表本是是内存地址不会变,变得是内部元素的引用,修改其中某一项元素的值,或者添加几个元素,不会改变其本身的地址,只会改变其内部元素的地址引用,但是如果对其进行重新赋值操作时,就会给列表重新赋予一个地址,来覆盖之前的地址这时列表地址会发生改变。其余的变量只是保存了一个引用,并不是指值本身,变量的每一次初始化,都开辟了一个新的空间,将新内容的地址赋值给变量

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 赞助了问题酬金10元 1月20日
  • 创建了问题 1月20日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?