Trong numpy array
s, số chiều đề cập đến số lượng axes
cần thiết để lập chỉ mục nó, không phải số chiều của bất kỳ không gian hình học nào. Ví dụ: bạn có thể mô tả vị trí của các điểm trong không gian 3D bằng mảng 2D:
array([[0, 0, 0],
[1, 2, 3],
[2, 2, 2],
[9, 9, 9]])
Trong đó có shape
của (4, 3)
và thứ nguyên 2
. Nhưng nó có thể mô tả không gian 3D vì độ dài của mỗi hàng ( axis
1) là ba, vì vậy mỗi hàng có thể là thành phần x, y và z của vị trí của một điểm. Độ dài của axis
0 cho biết số điểm (ở đây, 4). Tuy nhiên, đó là một ứng dụng cho phép toán mà mã đang mô tả, không phải là một thuộc tính của chính mảng. Trong toán học, thứ nguyên của một vectơ sẽ là độ dài của nó (ví dụ: các thành phần x, y và z của một vectơ 3d), nhưng trong vô nghĩa, bất kỳ "vectơ" nào thực sự chỉ được coi là một mảng 1d có độ dài thay đổi. Mảng không quan tâm kích thước của không gian (nếu có) được mô tả là gì.
Bạn có thể thử với điều này và xem số kích thước và hình dạng của một mảng như sau:
In [262]: a = np.arange(9)
In [263]: a
Out[263]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])
In [264]: a.ndim
Out[264]: 1
In [265]: a.shape
Out[265]: (9,)
In [266]: b = np.array([[0,0,0],[1,2,3],[2,2,2],[9,9,9]])
In [267]: b
Out[267]:
array([[0, 0, 0],
[1, 2, 3],
[2, 2, 2],
[9, 9, 9]])
In [268]: b.ndim
Out[268]: 2
In [269]: b.shape
Out[269]: (4, 3)
Mảng có thể có nhiều thứ nguyên, nhưng chúng trở nên khó hình dung ở trên hai hoặc ba:
In [276]: c = np.random.rand(2,2,3,4)
In [277]: c
Out[277]:
array([[[[ 0.33018579, 0.98074944, 0.25744133, 0.62154557],
[ 0.70959511, 0.01784769, 0.01955593, 0.30062579],
[ 0.83634557, 0.94636324, 0.88823617, 0.8997527 ]],
[[ 0.4020885 , 0.94229555, 0.309992 , 0.7237458 ],
[ 0.45036185, 0.51943908, 0.23432001, 0.05226692],
[ 0.03170345, 0.91317231, 0.11720796, 0.31895275]]],
[[[ 0.47801989, 0.02922993, 0.12118226, 0.94488471],
[ 0.65439109, 0.77199972, 0.67024853, 0.27761443],
[ 0.31602327, 0.42678546, 0.98878701, 0.46164756]],
[[ 0.31585844, 0.80167337, 0.17401188, 0.61161196],
[ 0.74908902, 0.45300247, 0.68023488, 0.79672751],
[ 0.23597218, 0.78416727, 0.56036792, 0.55973686]]]])
In [278]: c.ndim
Out[278]: 4
In [279]: c.shape
Out[279]: (2, 2, 3, 4)