列优先与行优先
2015-11-25 21:47
309 查看
对于一个矩阵,在内存中有两种存储顺序:(下面图和表格摘自 https://en.wikipedia.org/wiki/Row-major_order)
对于下面的矩阵:
![](https://upload.wikimedia.org/math/9/0/7/907659c6f9ccbf7a29f7e13d44560b5c.png)
可以有两种存储方式:左为列优先,右为行优先。
顾名思义,列优先:优先按列存储,先存完第一列再存第二列,行优先同理。
C/C++中矩阵的存储为行优先,但Matlib中是列优先准则,在不同语言间读取数据时需要注意这点,同时在写Matlab时要尽量取一个二维数组的列,而不是行。
扩展到N维矩阵,列优先意味着存储时第一个维度先变化,即存储顺序为(0,0,0,...)、(1,0,0,...)、(max,0,0,...)、(0,1,0,...)、(1,1,0,...),
行优先意味着最后一个维度先变化。
p.s:caffe的Blob、numpy的array都是和C语言一样,是行优先的。
对于下面的矩阵:
![](https://upload.wikimedia.org/math/9/0/7/907659c6f9ccbf7a29f7e13d44560b5c.png)
可以有两种存储方式:左为列优先,右为行优先。
|
|
C/C++中矩阵的存储为行优先,但Matlib中是列优先准则,在不同语言间读取数据时需要注意这点,同时在写Matlab时要尽量取一个二维数组的列,而不是行。
扩展到N维矩阵,列优先意味着存储时第一个维度先变化,即存储顺序为(0,0,0,...)、(1,0,0,...)、(max,0,0,...)、(0,1,0,...)、(1,1,0,...),
行优先意味着最后一个维度先变化。
p.s:caffe的Blob、numpy的array都是和C语言一样,是行优先的。
相关文章推荐
- 斜堆,非旋转treap,替罪羊树
- [Leetcode]Search for a Range
- 106.Oracle数据库SQL开发之 表——向表中添加注释
- PHP数组的遍历
- poj1011
- 安卓apk签名方法
- C语言常见问题分析(1)
- LIstView
- Hadoop2.6.0集群配置
- 动态规划-钢条切割(java)
- 105.Oracle数据库SQL开发之 表——重命名表
- Self-confidence
- 二叉树的遍历
- 《C++ primer》英文第五版阅读笔记(二十)——类型转换
- 给java的JFileChooser组件添加一个复选框
- Html自动播放音乐代码
- 104.Oracle数据库SQL开发之 表——修改表
- StringBuffer 清空的方法
- Nginx服务器
- hdu 1084 What Is Your Grade?(标记数据)