什么是指向数组数据开头的 Python 缓冲区对象?

2023-12-03

A = np.arange(12)
B = A.reshape(3, 4)
A[0] = 42
print(B)
print(A)
print(np.may_share_memory(A, B))
print(A.data == B.data)

运行上面的代码,令我惊讶的是print(A.data == B.data)回报False。看来 A 和 B 正在共享一些内存,并且它们的第一个元素应该共享。那么如果numpy.ndarray.data是一个指向数组数据开头的对象(如文档所述),预计会产生相同的结果A and B.


我更喜欢__array_interface__作为查看属性的一种方式,包括数据缓冲区地址:

In [766]: A = np.arange(12)
In [767]: B = A.reshape(3,4)
In [768]: A[0] = 42
In [769]: A
Out[769]: array([42,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
In [770]: B
Out[770]: 
array([[42,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
In [771]: A.data
Out[771]: <memory at 0xb16ef5dc>
In [772]: B.data
Out[772]: <memory at 0xb1719cdc>
In [773]: A.__array_interface__
Out[773]: 
{'data': (156295616, False),
 'descr': [('', '<i4')],
 'shape': (12,),
 'strides': None,
 'typestr': '<i4',
 'version': 3}
In [774]: B.__array_interface__
Out[774]: 
{'data': (156295616, False),
 'descr': [('', '<i4')],
 'shape': (3, 4),
 'strides': None,
 'typestr': '<i4',
 'version': 3}

A.__array_interface__['data'][0]值确实匹配

的文档A.data is:

Python 缓冲区对象指向数组数据的开头

但对于普通 Python 程序员来说这可能会产生误导。@ajcr的评论比较好。 “缓冲区对象”和数组数据缓冲区的地址之间存在差异。

===========

我没用过data属性多。少数情况之一是使用以下命令创建数组ndarray功能

如何使用 ctypes 指定 Numpy 数组的内存地址?

In [806]: np.ndarray((4,),buffer=A.data, dtype=int, offset=12)
Out[806]: array([3, 4, 5, 6])
In [807]: np.ndarray((4,),buffer=B.data, dtype=int, offset=16)
Out[807]: array([4, 5, 6, 7])

===============

A.data只是打印它的repr,并且与以下内容一样无信息:

In [808]: o=object()
In [809]: o
Out[809]: <object at 0xb729fc90>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是指向数组数据开头的 Python 缓冲区对象? 的相关文章

随机推荐

  • 如何动态设置HighlightBrushKey?

    这是我的代码
  • 使用 s.tl 跟踪方法时,Omniture 事件不会通过 DTM 触发/发送数据

    我正在使用 Adob e 动态标签管理器 DTM 我有一个直接调用规则 我有 使用 GUI 设置 evar 和 props 我正在使用 自定义页面代码 选项使用 JavaScript 将事件发送到 AA JavaScript 有一些 cas
  • 如何创建空的 Google 文档/电子表格

    创建空的 Google 文档 电子表格的最佳方法是什么 我现在正在使用 GData 文档 电子表格 API 但我更喜欢使用 Drive API 是否有一个 mimetype 可以创建一个空的 Google 文档 Google 电子表格 正如
  • 在哪里托管 Wakanda [客户端/服务器端纯 JS“框架”]?

    我最近发现Wakanda通过博客文章中的引用 这是开发纯 JavaScript 数据驱动应用程序的解决方案 客户端和服务器端的 JS 据我测试 该项目看起来很有前途 瓦坎达的JS框架WAF是开源的 由于我未能在瓦坎达的网站上找到答案 是否已
  • Pandas 解析列中的 json 并扩展到数据框中的新行

    我有一个包含 记录格式的 json 字符串的数据框 如下所示 In 9 pd DataFrame col1 A B col2 t 05 15 v 20 0 t 05 20 v 25 0 t 05 15 v 10 0 t 05 20 v 15
  • 如何制作SQL多对多同类型关系表

    我是 SQL 的新手 我首先尝试在编码时尽可能多地学习 这很困难 因为我正在设计数据库 我将不得不使用一段时间 所以我想要确保我做对了 我学习了多对多桥接表的基础知识 但是如果两个字段类型相同怎么办 假设有一个拥有数千名用户的社交网络 您将
  • CodeIgniter:设置闪存数据不起作用

    我使用以下代码来管理搜索结果中的分页 if this gt input gt post search notes is string this gt input gt post search notes is string this gt
  • 如何使 nth-child 使用嵌套标签?

    我试图让 nth child css 在嵌套标签上工作 但它似乎只适用于第一个标签和第二个标签 是否可以使其与多层嵌套标签一起使用 我试图将块引用上的边框设置为偶数和奇数标签之间的不同颜色 以便用户更轻松地可视化页面上的内容 test nt
  • Android:如何在 root 设备上执行 chmod

    我将在已取得 root 权限的 Android 2 1 设备上执行命令 字符串路径 data data com android providers settings databases settings db Runtime getRunt
  • Android:警报管理器

    这是代码 public void startAlarm Context context Intent intent new Intent context SyncService class PendingIntent sender Pend
  • Spring Java 配置包装注入的地图

    我最近从使用 Spring 的 XML 配置切换到使用 Java 配置 并且遇到了一个奇怪的问题 XML 配置是
  • 在一个程序集中序列化,然后在另一个程序集中反序列化?

    我在两个项目中有相同的课程 其中一个项目正在发送runtime到另一个进程 该进程必须反序列化该对象并使用它 假定两个对象相同但程序集名称不同 因此它们实际上被解释为两种不同的类型 根据我的研究 我提出了那些由于以下原因而不起作用的解决方案
  • 响应通知后按下后退按钮返回上一屏幕

    我正在使用类似的代码创建一个简单的通知创建并显示来自网络调用的通知 问题是 我希望响应通知的活动完成其业务 然后单击后退按钮 将先前活动的活动放回前台 并保持其后堆栈完好无损 这与之前的活动活动是我的应用程序还是其他人的应用程序的一部分无关
  • 从java以编程方式执行spark-submit

    我试图通过以下方式执行它 Process process Runtime getRuntime exec spark cmd 没有运气 通过 shell 运行的命令启动了我的应用程序 该应用程序成功了 通过 exec 运行它会启动一个进程
  • 如何在 Skyfield 中添加 JulianDate 对象或偏移

    The JulianDate对象在Skyfield是一种快速生成并保存一组儒略日时间值并将其传递给 Skyfield 的简便方法at 计算各种坐标中天文位置的方法 参见示例脚本 但是 我似乎找不到add or offset方法 以便我可以将
  • 如何删除/更新bigquery中的嵌套数据

    有没有办法删除 更新bigquery中的嵌套字段 假设我有这个数据 wives age wives name name 21 angel adam 20 kale 21 victoria rossi 20 jessica 或者在 json
  • 如何删除所有包含某个子字符串的PHP数组元素? [复制]

    这个问题在这里已经有答案了 好吧 我查了一些函数 但我似乎没有幸运地找到任何函数 我想过滤一个数组以删除包含某些字符串的特定数组 这是一个例子 array 1 gt January 2 gt February 3 gt March to r
  • jQuery document.createElement 等效吗?

    我正在重构一些旧的 JavaScript 代码 并且正在进行大量 DOM 操作 var d document var odv d createElement div odv style display none this OuterDiv
  • 从以 http 运行的网站使用 https 访问 CDN

    我正在开发一个网站 该网站将采用http 我试图包含来自 google cdn 的 jquery 给出的答案here says 使用协议相关的 URL 可让您轻松避免混合内容 安全错误 from 谷歌CDN 它被视为 我们建议您通过 HTT
  • 什么是指向数组数据开头的 Python 缓冲区对象?

    A np arange 12 B A reshape 3 4 A 0 42 print B print A print np may share memory A B print A data B data 运行上面的代码 令我惊讶的是pr