EDA365电子论坛网

标题: 来对比了解一下Matlab与Python中数组按行存储的方式 [打印本页]

作者: haidaowang    时间: 2019-12-20 10:38
标题: 来对比了解一下Matlab与Python中数组按行存储的方式
  H/ g4 ^' z5 t7 i: Z3 r4 J
数组因为是线性结构,因此在内存中都是顺序存储的,但按行存储还是按列存储,不同语言有不同的规定。matlab是按列存储的,而C/C++和python是按行存储的 。
- |, |4 b& c: a. x8 i/ x
$ }, x7 `* E) Q/ l6 f; p以二维数组为例:
' d, e# n3 y- k8 R; F; U* _" l; E$ v  i: I

; P1 k8 D9 T7 Y/ I$ A. u5 D" K& }! o; a% p1 C+ K; x) a, p
其在内存中的存储顺序为
3 S2 `2 W! ~3 ]4 e' e$ t# r. Z3 i( R7 e

+ u8 I# U* X1 l
' r* N+ z  w* i+ S因此reshape之后的结果如下0 Z& H& ~, |: I. K
' }+ K3 S  K6 k6 A5 J/ h$ a( Y. J4 \
# g! ~) G: l2 w4 F' E$ x

) }4 n6 |' |6 L而相同的数组A在matlab平台下的存储顺序为 1 Q$ ?' B5 ^& h$ n' C6 p
) C$ [* `! m* U- |2 N* w
( V" l* E( L; x) q/ i7 r
% {) A* y: C1 g/ }0 M. l- H
因此在matlab下reshape之后的结果如下5 e4 q; J6 Y( g5 p6 y
1 s  d/ A3 f% L
9 f( s$ c$ E+ `6 h

: [" n: S4 R8 B6 W4 s5 r8 _另外,matlab下可以直接根据存储顺序读取数组数据,也可以看出matlab是按列存储的
+ @3 m' o: t* r' y6 C  u
' Z9 D& }/ [* F( K# e" @" z2 D注:matlab中数组初始索引为1,因为两者语法上的一些差异,代码有所不同,已通过注释标注! w5 P5 d2 m2 Y5 i8 l. i
& N( l6 M, L: O) \- X/ U" z' H

2 X1 J. A/ N8 E, r1 H; p
6 D7 L; |5 ]& k  ^0 E6 h  Z0 v不过python中不能像上面的方法使用
( q  Q" s4 `( `2 c. u& s0 U$ B6 J5 I7 l! t, {

, Q8 |0 T5 Z( C# Q
0 v' l, E% U% a% l6 \, k" n  m了解数组在内存中的存储顺序能帮助我们更好的处理数组。
; w3 }) W% k4 T3 f7 d* r' v% i  i5 k4 Q7 R! L0 s* q

作者: xixihahaheihei    时间: 2019-12-20 18:16
谢谢分享




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2