Python中陣列按行儲存,與Matlab不同
阿新 • • 發佈:2018-12-31
陣列因為是線性結構,因此在記憶體中都是順序儲存的,但按行儲存還是按列儲存,不同語言有不同的規定。matlab是按列儲存的,而C/C++和python是按行儲存的 。
以二維陣列為例:
#python
import numpy as np
>>> A=np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
其在記憶體中的儲存順序為
因此reshape之後的結果如下
#python
>>> A.reshape(3,2)
array([[1, 2],
[3, 4 ],
[5, 6]])
而相同的陣列A在matlab平臺下的儲存順序為
因此在matlab下reshape之後的結果如下
%matlab
>> A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> reshape(A,3,2)
ans =
1 5
4 3
2 6
另外,matlab下可以直接根據儲存順序讀取陣列資料,也可以看出matlab是按列儲存的
注:matlab中陣列初始索引為1,因為兩者語法上的一些差異,程式碼有所不同,已通過註釋標註
%matlab
>> A =
1 2 3
4 5 6
>> A(2)
ans =
4
>> A(5)
ans =
3
不過python中不能像上面的方法使用
#python
>>> A=np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
>>> A[1]
array([4, 5, 6])
>>> A[2]
IndexError: index 2 is out of bounds for axis 0 with size 2
>>> A[1,0]
4
瞭解陣列在記憶體中的儲存順序能幫助我們更好的處理陣列。