NumPy 以Fortran顺序显示数组
在本文中,我们将探讨如何以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方法创建一个1D数组,然后使用np.reshape方法以Fortran顺序重塑数组。以下是以Fortran顺序显示数组的代码 −
b = np.reshape(a.flatten(order='F'), a.shape)
print(b)
a.flatten(order=’F’)方法按Fortran顺序(列主序)展平数组a,而np.reshape方法将展平后的数组重新塑形为原始形状(列主序)。得到的数组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顺序存储和显示数组有时是必要的,以便与传统代码兼容,或者为了利用面向列的访问模式的性能优化。