检查numpy数组是不是连续?

Posted

技术标签:

【中文标题】检查numpy数组是不是连续?【英文标题】:Check if numpy array is contiguous?检查numpy数组是否连续? 【发布时间】:2018-12-20 14:19:53 【问题描述】:

如何确定一个 n 维 numpy 数组 Arr 在 C 样式或 Fortran 样式中是否连续?

【问题讨论】:

另请查看strides 【参考方案1】:

The numpy documentation 表示可以通过属性flags 来检查数组是 C 连续还是 Fortran 连续:

Arr.flags['C_CONTIGUOUS']
Arr.flags['F_CONTIGUOUS']

这些属性返回一个布尔值,指示这两种情况中的哪一种为真。

【讨论】:

除非它不是一个函数,它实际上是numpy.ndarray 对象的一个​​属性,正如您报告的语法(这是正确的)所暗示的那样。 @norok2,你是对的!我编辑了答案。谢谢! 并且通过一些轴交换,可能两者都不是真的。对于一维数组,两者都是 True【参考方案2】:

您也可以试试ndarray.data.contiguous 会员。例如。 (在我的机器上):

arr = np.arange(6).reshape(2, 3)

print(arr.data.contiguous)  # True
print(arr.data.c_contiguous)  # True
print(arr.data.f_contiguous)  # False

(我找不到任何信息:哪些 numpy 版本支持这一点,即使在他们的文档上也是如此。欢迎在 cmets 中提供任何线索!)

【讨论】:

以上是关于检查numpy数组是不是连续?的主要内容,如果未能解决你的问题,请参考以下文章

检查两个 3D numpy 数组是不是包含重叠的 2D 数组

诚之和:Numpy怎么检查数组全为零的几种方法

numpy.asarray:如何检查其结果 dtype 是不是为数字?

如何检查numpy矩阵的列中的所有值是不是相同?

有效地检查 Python / numpy / pandas 中的任意对象是不是为 NaN?

Numpy:检查数组的字符串数据类型