NumPy ndarray.flatten() 方法



NumPy 的ndarray.flatten()方法用於返回一個新的1維陣列,它是原始陣列的扁平化副本。

ndarray.flat屬性是一個迭代器,而ndarray.flatten()建立一個新的陣列。

我們可以指定扁平化的順序:'C'表示行優先(C風格)順序,'F'表示列優先(Fortran風格)順序,'A'表示如果陣列是Fortran連續的則為'F',否則為'C','K'表示元素在記憶體中出現的順序。

語法

Numpy ndarray.flatten 函式的語法如下:

ndarray.flatten(order='C')

引數

此函式接受一個引數,即 'C',表示行優先,預設為此值。

我們可以賦值為 'F':列優先,'A':如果 a 在記憶體中是 Fortran 連續的,則以列優先順序展開,否則以行優先順序展開;'K':按照元素在記憶體中出現的順序展開 a。

返回值

此函式返回一個一維 NumPy 陣列,其中包含輸入陣列中所有元素,按照指定的順序排列。

示例 1

以下是 NumPy ndarray.flatten() 方法的示例,它展示瞭如何將一個二維陣列以預設的行優先順序展平成一維陣列,結果為 [1, 2, 3, 4, 5, 6]:

import numpy as np

# Creating a 2D numpy array
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

# Flattening the array using the default order ('C')
flattened_array = array_2d.flatten()

print("Original 2D array:")
print(array_2d)
print("\nFlattened array (row-major order):")
print(flattened_array)

輸出

Original 2D array:
[[1 2 3]
 [4 5 6]]

Flattened array (row-major order):
[1 2 3 4 5 6]

示例 2

在這個例子中,我們展示瞭如何將一個三維陣列以列優先順序展平成一維陣列,結果為 [1, 5, 3, 7, 2, 6, 4, 8]:

import numpy as np

# Creating a 3D numpy array
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

# Flattening the array using the 'F' order
flattened_array = array_3d.flatten(order='F')

print("Original 3D array:")
print(array_3d)
print("\nFlattened array (column-major order):")
print(flattened_array)

輸出

Original 3D array:
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

Flattened array (column-major order):
[1 5 3 7 2 6 4 8]

示例 3

下面的例子展示瞭如何使用 'A' 順序展平一個 Fortran 連續陣列,這將導致列優先順序展平,結果為 [1, 4, 2, 5, 3, 6]:

import numpy as np

# Creating a 2D numpy array with Fortran-contiguous memory layout
array_fortran = np.asfortranarray([[1, 2, 3], [4, 5, 6]])

# Flattening the array using the 'A' order
flattened_array = array_fortran.flatten(order='A')

print("Original Fortran-contiguous 2D array:")
print(array_fortran)
print("\nFlattened array ('A' order):")
print(flattened_array)

輸出

Original Fortran-contiguous 2D array:
[[1 2 3]
 [4 5 6]]

Flattened array ('A' order):
[1 4 2 5 3 6]
numpy_array_manipulation.htm
廣告