以 Fortran 順序顯示 NumPy 陣列


在本文中,我們將探討如何以 Fortran 順序顯示 NumPy 陣列。預設情況下,NumPy 陣列以行主序(C 順序)儲存,這意味著陣列的元素按行順序儲存在連續的記憶體位置中。但是,有時需要以列主序(Fortran 順序)儲存和顯示陣列,尤其是在科學計算應用中。

在 NumPy 中,可以使用 np.array() 函式的 order 引數以 Fortran 順序建立陣列。Fortran 順序也稱為列主序,這意味著陣列的元素按列順序儲存在記憶體中。

以下是如何以 Fortran 順序建立 NumPy 陣列的示例:

先決條件

在開始之前,請確保您的機器上已安裝 NumPy。您可以透過在終端中執行以下命令來安裝它:

pip install numpy
Getting Started

首先,讓我們建立一個簡單的二維 NumPy 陣列,以行主序儲存:

import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) Print(a)

輸出

array([[1, 4, 7],
   [2, 5, 8],
   [3, 6, 9]])

預設情況下,陣列 a 以 C 順序儲存,這意味著元素按行順序儲存。要檢查陣列的順序,我們可以使用 NumPy 陣列的 flags 屬性:

print(a.flags)

這將列印一個類似字典的物件,其中包含與陣列相關的各種標誌,包括 C_CONTIGUOUS 和 F_CONTIGUOUS 標誌。預設情況下,C_CONTIGUOUS 標誌設定為 True,表示陣列以 C 順序儲存。

以 Fortran 順序顯示

要以 Fortran 順序顯示陣列 a,我們可以使用 np.ndarray.flatten 方法建立一維陣列,然後使用 np.reshape 方法以 Fortran 順序重新整形陣列。以下是顯示陣列的 Fortran 順序的程式碼:

b = np.reshape(a.flatten(order='F'), a.shape)
print(b)

a.flatten(order='F') 方法以 Fortran 順序展平陣列 a,而 np.reshape 方法將展平的陣列重新整形回其原始形狀,並以 Fortran 順序儲存。生成的陣列 b 將與 a 具有相同的元素,但將以列主序儲存和顯示。

或者,我們可以使用 np.transpose 方法交換陣列的行和列:

b = np.transpose(a)
print(b)

示例

# 使用巢狀迴圈轉置矩陣的程式

X = [[12,7],
   [4 ,5],
   [3 ,8]]
result = [[0,0,0],
   [0,0,0]]
# iterate through rows
for i in range(len(X)):
   # iterate through columns
   for j in range(len(X[0])):
      result[j][i] = X[i][j]
for r in result:
   print(r)

輸出

[12, 4, 3]
[7, 5, 8]

np.transpose 方法返回一個新的陣列,其軸被轉置,有效地交換了原始陣列的行和列。此方法也適用於更高維度的陣列,它交換相應的軸對。

結論

在本文中,我們探討了如何以 Fortran 順序顯示 NumPy 陣列。我們瞭解瞭如何使用 flags 屬性檢查 NumPy 陣列的順序,以及如何使用 np.ndarray.flatten 和 np.reshape 方法或 np.transpose 方法以 Fortran 順序顯示陣列。在某些情況下,以 Fortran 順序儲存和顯示陣列對於與舊版程式碼的相容性或利用列主訪問模式的效能最佳化是必要的。

更新於: 2023年7月31日

486 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.