如何检查两片numpy数组是否相同(或重叠)?

时间:2012-05-25 02:30:26

标签: python numpy

我想检查两个ndarray是否是相同底层ndarray的重叠视图。

要检查两个切片是否完全相同,我可以执行以下操作:

a.base is b.base and a.shape == b.shape and a.data == b.data

缓冲区的比较似乎只适用于一个简单的案例 - 任何人都可以告诉我它是否有效吗?

不幸的是,这对重叠切片不起作用,我还没想出如何从缓冲区中提取其底层数据中的偏移量 - 也许有人可以帮我解决这个问题?

另外,说abx的切片,cb的切片。由于基础数据相同,我还想检测ca之间的重叠。看起来我应该能够通过比较缓冲和形状......如果有人能告诉我具体如何,我将不胜感激。

2 个答案:

答案 0 :(得分:10)

numpy.may_share_memory()是我们目前最好的启发式方法。这是保守的启发式;它可能会给你误报,但它不会给你假阴性。我认为可能有办法将启发式改进为100%正确。如果它们成功,它们将被折叠成该功能,这是最好的前进方式。

答案 1 :(得分:1)

可以使用数组的ctypes属性比较索引在内存中的位置。这可能需要一些工作,因此您可能需要退一步,看看是否有不同的方法来解决您的问题。

相关问题