NumPy 以Fortran顺序显示数组

NumPy 以Fortran顺序显示数组

在本文中,我们将探讨如何以Fortran顺序显示NumPy数组。默认情况下,NumPy数组以行主顺序(C顺序)存储,这意味着数组的元素以连续的内存位置按行存储。然而,有时需要以列主顺序(Fortran顺序)存储和显示数组,尤其是在科学计算应用中。

NumPy 以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)

NumPy 以Fortran顺序显示数组

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顺序存储和显示数组有时是必要的,以便与传统代码兼容,或者为了利用面向列的访问模式的性能优化。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程