C contiguous 指的是数组的行存储在内存中的地址是连续的,
与之对应的是 F contiguous,指的是数组的列存储在内存中的地址是连续的,
Pascal, C,C++,Python 都是行优先存储,即内存中同行的元素存在一起;
而 Fortran,MatLab 是列优先存储,即内存中同列的元素存在一起。
这种设计有什么好处呢?
当然是为了提升访问速度!
一般从内存读取数据的时候会将数据相邻的内容一起读,方便缓存加速。
如果一个矩阵是行连续的,那它的转置就是列连续的,下面这个例子说明了这一点:
>>> a = np.random.random((5,5))
>>> a.flags
C_CONTIGUOUS

本文探讨了Ccontiguous和Fcontiguous的概念,解释了行优先和列优先存储方式如何影响矩阵的访问速度。通过对比不同编程语言如Pascal、C、C++、Python和Fortran、MatLab的存储特性,以及numpy随机矩阵的实例,揭示了行连续矩阵求行和与列和的速度差异。
最低0.47元/天 解锁文章
3264

被折叠的 条评论
为什么被折叠?



