您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python numpy数据指针地址更改而不进行修改

5b51 2022/1/14 8:21:59 python 字数 4029 阅读 557 来源 www.jb51.cc/python

编辑经过一些更多的摆弄,我到目前为止已经隔离了以下状态:>直接输入变量时,1D数组给出两个不同的地址,使用print()时只有一个地址> 2D数组(或矩阵)在直接输入变量时给出三个不同的地址,在使用print()时给出两个> 3D数组在直接输入变量时给出两个不同的地址,在使用print()时只有一个(显然与1D数组相同)像这样:>&g

概述

编辑

经过一些更多的摆弄,我到目前为止已经隔离了以下状态:

>直接输入变量时,1D数组给出两个不同的地址,使用print()时只有一个地址
> 2D数组(或矩阵)在直接输入变量时给出三个不同的地址,在使用print()时给出两个
> 3D数组在直接输入变量时给出两个不同的地址,在使用print()时只有一个(显然与1D数组相同)

像这样:

>>> a = numpy.array([1,2,3],dtype="int32")

>>> a.data

  
   4048>
>>> a.data

   
    4048>
>>> a.data

    
     4048>

>>> print(a.data)

     
    
   
  

原始邮政

我的印象只是在python控制台中输入一个变量,回显一个简单描述它的值(和类型)的字符串.它以与print()不同的方式格式化,但我假设它们返回的值都是相同的.

当我尝试输出numpy对象的数据指针对象的地址时,只需输入变量每隔一次给我不同的值,而print()给出相同的值.

这表明两个操作的不同之处不仅在于输出的格式,还在于它们从何处获取信息.但这些额外的差异究竟是由什么组成的呢?

>>> a = numpy.array([0,1,2])

>>> a
array([0,2])
>>> print(a)
[0 1 2]

>>> print(a.data)

  

>>> a.data

  

注意,在上面的例子中有3个地址旋转;我很确定这都是一个实现细节.我猜想会涉及一些缓存,这意味着每次访问a.data时都不会生成新视图.

您还可以确定您正在查看单独的视图对象:

>>> id(a.data)
140430643088968
>>> id(a.data)
140430643086280
>>> id(a.data)
140430643088968
>>> id(a.data)
140430643086280

因此,大多数混淆可能来自于a.data的属性符号表明它是我们正在谈论的固定对象这一事实,而事实并非如此.

总结

以上是编程之家为你收集整理的Python numpy数据指针地址更改而不进行修改全部内容,希望文章能够帮你解决Python numpy数据指针地址更改而不进行修改所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶