以 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 顺序存储和显示数组对于与旧版代码的兼容性或利用列主访问模式的性能优化是必要的。