Numpy ,Python3.6 - 无法理解为什么地址不同?

2024-05-26

这是我的代码

my_array_1 = np.arange(25).reshape(5, 5)
print(my_array_1)

my_array_red = my_array_1[:, 1::2]
print(my_array_red)

my_array_blue = my_array_1[1::2, 0:3:2]
print(my_array_blue)

my_array_yellow = my_array_1[-1, :]
print(my_array_yellow)

print(id(my_array_1))
print(id(my_array_red))
print(id(my_array_yellow))
print(id(my_array_blue))

print(my_array_1.data)
print(my_array_red.data)
print(my_array_blue.data)
print(my_array_yellow.data)

这是输出:

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
[[ 1  3]
 [ 6  8]
 [11 13]
 [16 18]
 [21 23]]
[[ 5  7]
 [15 17]]
[20 21 22 23 24]
2606769150592
2606769282544
2607017647120
2606769282624
<memory at 0x0000025EFE56CA68>
<memory at 0x0000025EFE56CA68>
<memory at 0x0000025EFE56CA68>
<memory at 0x0000025EFE5A8F48>

问题 : 只需检查我的输出的最后 4 行。为什么 my_array_1.data.data 、 my_array_red.data 、 my_array_blue.data 具有相同的值,但 my_array_yellow.data 的值在哪里不同?


我找到了data的值__array_interface__获得更多信息:

In [2]: my_array_1.__array_interface__['data']
Out[2]: (33691856, False)
In [3]: my_array_red.__array_interface__['data']
Out[3]: (33691864, False)
In [4]: my_array_blue.__array_interface__['data']
Out[4]: (33691896, False)
In [5]: my_array_yellow.__array_interface__['data']
Out[5]: (33692016, False)

Out[2]是数据缓冲区的开始。

red多了 8 个字节 - 即从一开始就有一个元素。

blue是 40 个字节 - 下一行

In [8]: my_array_1.strides
Out[8]: (40, 8)

yellow是 160 个字节 - 这是最后一行的开始(距末尾 40 个字节)

In [9]: 2016-1856
Out[9]: 160
In [10]: my_array_1.nbytes
Out[10]: 200

The data地址各不相同,但大致相同。但它们更难解释。

In [11]: my_array_1.data
Out[11]: <memory at 0x7fa975369a68>
In [12]: my_array_red.data
Out[12]: <memory at 0x7fa975369b40>
In [13]: my_array_blue.data
Out[13]: <memory at 0x7fa975369c18>
In [14]: my_array_yellow.data
Out[14]: <memory at 0x7fa9710f11c8>

The data属性可以用在ndarray构造函数:

两个元素来自yellow:

In [17]: np.ndarray(2,dtype=my_array_1.dtype,buffer=my_array_yellow.data)
Out[17]: array([20, 21])

相同的 2 个元素,但具有原始地址和偏移量(如上面推导的):

In [18]: np.ndarray(2,dtype=my_array_1.dtype,buffer=my_array_1.data, offset=160)
Out[18]: array([20, 21])

实际上datadisplay 没有告诉我们任何有关数据缓冲区所在位置的信息。这是地址memoryview引用缓冲区的对象,而不是缓冲区本身的地址。称呼data再次,并获取不同的内存视图对象:

In [19]: my_array_1.data
Out[19]: <memory at 0x7fa975369cf0>

如果我打印这些内存视图对象,我会得到与您相同的模式:

In [22]: print(my_array_1.data)
<memory at 0x7fa970e37120>
In [23]: print(my_array_red.data)
<memory at 0x7fa970e37120>
In [24]: print(my_array_blue.data)
<memory at 0x7fa970e37120>
In [25]: print(my_array_yellow.data)
<memory at 0x7fa9710f17c8>

对于 23 和 24,它只是重复使用内存插槽,因为打印没有持久性。我不知道为什么yellow不会重用它,除非该对象可能非常不同,以至于它不适合在同一空间中。在里面Out[11]等情况下,ipython缓冲挂在这些对象上,因此无法重用。

它只是强化了这样一个想法:这些内容的打印显示没有什么重要意义。memoryview objects。它与数据缓冲区位置无关。它更像是id,只是内存中的任意位置。

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

Numpy ,Python3.6 - 无法理解为什么地址不同? 的相关文章

  • 如何在 ndarray 内创建一个球体? [复制]

    这个问题在这里已经有答案了 我有一个 ndarray 大小32x32x32 我想在数组内创建一个球体 其中心位于 x y 半径为 4 像素 球体的值为 1 而数组的值为 0 这如何在 python 中完成 这是生成数组的代码 import
  • python:numpy 中的组合掩码

    在 numpy 数组中我想替换所有nan and inf变成一个固定的数字 我可以一步完成这一操作以节省计算时间 数组真的很大 吗 a np arange 10 0 a 3 np nan a 5 np inf a 7 np inf a 0
  • 如何在一段时间后停止执行?

    我想在一定时间后停止执行 Dash 程序 当我关闭浏览器窗口时效果更好 尽管我怀疑这是否可能 有没有办法通过python中断它 我已经尝试过放一个 sys exit 打电话后app run server 虽然据我了解app run serv
  • xlwings: 删除一个列 | Excel 中的行

    如何删除 Excel 中的一行 wb xw Book Shipment xlsx wb sheets Page1 1 range 1 1 clear clear 用于删除内容 我想删除该行 我很惊讶 clear 函数有效 但 delete
  • Windows7上python3.5无法安装BeautifulSoup4

    我已经从下载了 beautifulsoup4 4 5 3 tar gzhttps www crummy com software BeautifulSoup bs4 download 4 5 https www crummy com sof
  • 循环列表的值[重复]

    这个问题在这里已经有答案了 我是编码新手 正在尝试编写一个简单的代码 该代码将采用一个列表 例如 1 2 3 并循环元素 n 次 所以如果n 1 我应该得到A 3 1 2 如果n 2 我应该得到A 2 3 1 我写的代码是 n 1 j 0
  • 绘制到图像对象

    我可以保存一个图imshow 因为它返回一个图像对象 如下所示 image plt imshow list interpolation None 后来我想创建其中许多图像的动画 将其保存在列表中并将其渲染为视频 如果这种方法很愚蠢 请告诉我
  • 计算矩阵乘法的子集

    当我有两个非稀疏矩阵时A and B 有没有一种方法可以有效地计算C A T dot B 当我只想要元素的子集时C 我有所需的指数C以指定的CSC格式存储here http docs scipy org doc scipy referenc
  • 使用 PIL 用附近的颜色填充空白图像空间(也称为修复)

    我用 PIL 创建一个图像 我需要填充空白区域 显示为黑色 我可以轻松地用静态颜色填充它 但我想做的是用附近的颜色填充像素 例如 边框之后的第一个像素可能是填充像素的高斯模糊 或者可能是中描述的推拉型算法Lumigraph Gortler
  • “扩展”numpy ndarray 的好方法?

    有没有 扩展 numpy ndarray 的好方法 假设我有一个像这样的 ndarray 1 2 3 4 我希望每行通过填充零来包含更多元素 1 2 0 0 0 3 4 0 0 0 我知道一定有一些蛮力的方法可以做到这一点 比如构造一个带有
  • 如何在 Django Admin 的“更改”页面中显示内嵌上传的图像?

    我正在尝试在中显示内联上传的图像 变更列表 页面在 Django 管理中 这是我的代码如下 models py from django db import models class Product models Model name mod
  • 添加和访问 numpy 结构化数组的对象类型字段

    我正在使用 numpy 1 16 2 简单来说 我想知道如何将对象类型字段添加到结构化数组中 标准方式通过recfunctions模块抛出错误 我想这是有原因的 因此 我想知道我的解决方法是否有问题 此外 我想了解为什么这种解决方法是必要的
  • pandas 在单元格中缩写字典

    我有一个相当复杂的嵌套字典 它使用 pandas 很好地打印为 html 但是 有一个字典作为打印在单元格中的值之一 如下所示 pd set option display max colwidth 1 已设置 所以这不应该是问题 这是产生问
  • scipy.special.binom 和 scipy.misc.comb 之间有什么区别?

    scipy special binom 和 scipy misc comb 之间有什么区别 在 ipython 中我可以看到它们返回不同的类型并且也有不同的精度 scipy special binom 4 3 4 0 scipy misc
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • TypeError:在 Python 3.8.1 上运行 Pytest 脚本时,参数中缺少必需字段“posonlyargs”

    我在 Python 3 8 1 上创建了一个简单的 Selenium Pytest 自动化脚本 运行脚本后 我看到以下错误 Traceback most recent call last Error messages TypeError r
  • 如何添加 id 列来标识 read_html() 表?

    考虑以下站点 site1 http pastebin com vpnGqn5X site2 http pastebin com FbAFGbfR site3 http pastebin com LqZWxFSP 其中有许多不同的表 我在用读
  • shap.TreeExplainer 和 shap.Explainer 条形图之间的区别

    对于下面给出的代码 我得到了不同的条形图shap values 在此示例中 我的数据集为 1000train样本有 9 个类别和 500 个test样品 然后 我使用随机森林作为分类器并生成模型 当我开始生成shap条形图在这两种情况下得到
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File

随机推荐

  • PostgreSQL ISOLATION LEVEL 生效的时间似乎是在第一次 SELECT 之后

    我正在运行 PostgreSQL 9 5 3 我试图理解为什么我看到下面两个例程之间的行为差 异 我发现这种行为违反直觉 但可能有一个很好的理由 我只是想知道如果是的话那是什么 Setting ISOLATION LEVEL REPEATA
  • Salesforce 中基于 iframe 的集成

    我想在 Salesforce iFrame 内显示我的网站 当有人在 iFrame 内我的网站上进行任何活动时 我也想更新 Salesforce 页面吗 我可以这样做吗 请建议 一种更新的方法 现在是 GA 是Force com 画布 ht
  • 如何使用 UnboundID LDAP SDK 获取 LDAP 中的 DN 和用户 ID

    当我唯一的参数是用户 ID 时 我试图获取用户的 DN 可能不止一个 我还使用 UnboundID LDap SDK 如您所见 public String getCustomerAdminDN String uid String resul
  • 估计 libGD 操作所需的内存

    在尝试使用 libGD 在 PHP 中调整图像大小之前 我想检查是否有足够的内存可用于执行该操作 因为 内存不足 会完全终止 PHP 进程并且无法捕获 我的想法是 原始图像和新图像中的每个像素 RGBA 需要 4 字节内存 check av
  • 如何修复损坏的 xampp 'mysql.user' 表?

    我昨天使用 Xampp 创建了一些简单的基于 Web 的实用工具 今天我想继续研究它 但 xampp 控制面板给了我一些奇怪的错误 这是 MySQL 错误日志 2019 07 20 23 47 13 0 Note InnoDB Uses e
  • 使用 Java 编辑 jpeg EXIF 数据

    我想编辑 jpg 文件的属性 例如 评论 标题 拍摄日期 相机制造商等 我找到了读取这些数据的库 但我需要一个free带有示例的库edit them 我知道 apache 的成像 sanselan 但我无法用它编辑数据 如果您以前自己使用过
  • Oracle PLSQL 将日期时间截断为 15 分钟块

    我想将我的数据聚合成 15 分钟的片段 一刻钟 为此 我编写了一些生成 15 分钟日期时间块的代码 SELECT TRUNC SYSDATE hh 0 25 24 ROWNUM 0 25 24 AS time start ROWNUM TR
  • SpriteKit内存管理预加载缓存和fps问题

    我的问题非常简单 根据苹果文档 您可以在呈现场景之前将纹理预加载到 RAM 中 如下所示 SKTextureAtlas atlas SKTextureAtlas atlasNamed effect circle explode SKText
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • htaccess 选项-索引有什么用?

    我查看了 apache org 网站上的解释 但它没有以我能理解的方式解释 我在这里找到了一些信息 htaccess 文件选项 子目录索引 https stackoverflow com questions 1767785 htaccess
  • 从 RabbitMQ 迁移到 Amazon SQS [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们的初创公司目前正在使用RabbitMQ with Python Django 对于消息队列 现在我们计划转移到Amazon SQS其高可用性
  • 如何在eclipse中打开项目

    我下载了 LISTView 教程的 zip 文件 其中包含所有文件 但我不知道如何在 Eclipse 中打开它 因为它只是打开文件 而不是整个项目 我从这里下载的 http mfarhan133 wordpress com 2010 10
  • 如何找出数据包的HTTP头长度?

    我知道如何手动执行此操作 通过查看十六进制转储 我怎样才能自动获得相同的信息 我必须使用 API 吗 我有wireshark 和Microsoft 网络监视器 这可以通过简单地实现Lua解析器 http wiki wireshark org
  • 模拟函数指针

    以下类包含一个应使用回调技术计算积分的方法 package integrals import java lang public class Integrals public static double f1 double x return
  • 用于验证 JSON 的正则表达式

    我正在寻找一个允许我验证 json 的正则表达式 我对正则表达式非常陌生 我知道用正则表达式解析很糟糕 但它可以用来验证吗 是的 可以进行完整的正则表达式验证 大多数现代正则表达式实现都允许递归正则表达式 它可以验证完整的 JSON 序列化
  • C++ 相当于 Java 的 toString?

    我想控制写入流的内容 即cout 对于自定义类的对象 这在 C 中可能吗 在Java中你可以重写toString 方法用于类似目的 在C 中你可以重载operator lt lt for ostream和你的自定义类 class A pub
  • 如何在不同的QT线程中创建一个窗口?

    我有一个应用程序 其中每个线程 主线程除外 都需要创建自己的窗口 我尝试创建一个线程然后调用this gt exec in the run功能 然而 在我接到那个电话之前我就收到了一个错误 ASSERT failure in QWidget
  • 将 Uri 转换为字符串以及将字符串转换为 Uri

    我正在开发一些应用程序 它允许从 SD 卡中选择图像 将其保存到数据库中并为 ImageView 设置该值 我需要知道将 uri 转换为字符串以及将字符串转换为 uri 的方法 现在我使用了 Uri 的 getEncodedPath 方法
  • 在我的输入中显示多个信息

    我有一个输入 div class search field search field date search field calendar ui datepicker calendar columns small 3 div
  • Numpy ,Python3.6 - 无法理解为什么地址不同?

    这是我的代码 my array 1 np arange 25 reshape 5 5 print my array 1 my array red my array 1 1 2 print my array red my array blue