按Fortran顺序显示Numpy数组

  • Post category:Python

按Fortran顺序显示Numpy数组,需要使用Numpy库中的reshape函数来改变数组的维度顺序。

具体方法如下:

1.导入Numpy库

import numpy as np

2.创建一个3×3的二维数组

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], order='F')

在创建数组中加上order=’F’表示按照Fortran顺序创建数组。

3.使用reshape函数改变数组的维度顺序

result = np.reshape(matrix, (3, 3), order='C')

在reshape函数中通过order=’C’参数将数组的维度顺序改为C(即按照C语言的顺序)。如果不指定order参数,则reshape函数默认按照C语言的顺序(即按行的顺序)。

4.输出数组

print(result)

输出结果为:

[[1 4 7]
 [2 5 8]
 [3 6 9]]

可以看到,通过reshape函数改变了数组的维度顺序后,按照C语言顺序输出数组,就得到了按Fortran顺序显示数组的效果。

另外,下面给出一个针对多维数组的示例:

# 创建一个3×3×3的三维数组
array_3d = np.arange(27).reshape((3, 3, 3), order='F')

# 输出原数组
print('原数组:\n', array_3d)

# 将三维数组按Fortran顺序转换为二维数组
array_2d = np.reshape(array_3d, (27, 3), order='F')

# 输出转换后的二维数组
print('按Fortran顺序转换为二维数组:\n', array_2d)

输出结果为:

原数组:
 [[[ 0  3  6]
  [ 9 12 15]
  [18 21 24]]

 [[ 1  4  7]
  [10 13 16]
  [19 22 25]]

 [[ 2  5  8]
  [11 14 17]
  [20 23 26]]]

按Fortran顺序转换为二维数组:
 [[ 0  9 18]
  [ 1 10 19]
  [ 2 11 20]
  [ 3 12 21]
  [ 4 13 22]
  [ 5 14 23]
  [ 6 15 24]
  [ 7 16 25]
  [ 8 17 26]]

通过reshape函数将三维数组按Fortran顺序转换为二维数组后再输出,得到了按Fortran顺序显示多维数组的效果。