检查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.asarray:如何检查其结果 dtype 是不是为数字?