NumPy ravel()

ravel() 方法在不改变数据的情况下展平 NumPy 数组。

示例

import numpy as np

array1 = np.array([[0, 1], [2, 3]])

# flatten an array array2 = np.ravel(array1)
print(array2) # Output : [0 1 2 3]

ravel() 语法

ravel() 的语法是

numpy.ravel(array, order)

ravel() 参数

ravel() 方法接受两个参数

  • array - 要展平的原始数组
  • order (可选) - 指定展平数组元素的顺序

ravel() 返回值

ravel() 方法返回展平后的数组。


示例 1:展平多维数组

import numpy as np

array1 = np.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])

# flatten the array array2 = np.ravel(array1)
print(array2)

输出

 [0 1 2 3 4 5 6 7]

在 ravel() 中使用可选的 order 参数

order 参数指定展平数组元素的顺序。

order 可以是:

  • 'C' - 按行展平元素(C 风格顺序)
  • 'F' - 按列展平元素(Fortran 风格顺序)
  • 'A' - 尝试保留原始数组的顺序,否则默认为 C 顺序。
  • 'K' - 按照元素在内存中的顺序进行展平,默认使用 C 风格顺序。
import numpy as np

array1 = np.array([[[0, 1], [2, 3]],
                   [[4, 5], [6, 7]]])

# flatten the array row-wise array2 = np.ravel(array1, order = 'C')
print("C:",array2)
# flatten the array column-wise array3 = np.ravel(array1, order = 'F')
print("F:",array3)
# flatten the array to original array's order array4 = np.ravel(array1, order = 'A')
print("A:",array2)
# flatten the array in the order they occur in memory) array5 = np.ravel(array1, order = 'K')
print("K:",array3)

输出

C: [0 1 2 3 4 5 6 7]
F: [0 4 2 6 1 5 3 7]
A: [0 1 2 3 4 5 6 7]
K: [0 4 2 6 1 5 3 7]

flatten 和 ravel 之间的区别

flatten()ravel() 之间的主要区别在于

  • flatten() 是一个 ndarray 对象方法,而 ravel() 是一个库级函数。例如,
import numpy as np

array1 = np.array([[1, 2], [3, 4]])

# flatten is used as an array object array2 = array1.flatten() # ravel is used as a library function array3 = np.ravel(array1)
print(array2) print(array3)

输出

[1 2 3 4]
[1 2 3 4]
  • ravel() 可以处理数组列表,但 flatten() 不能。
import numpy as np

# create a list of arrays
array1 = [np.array([1, 2]), np.array([3, 4])]

# use ravel with a list of arrays raveled_arr_list = np.ravel(array1)
print(raveled_arr_list)
# using flatten with a list of arrays # raises an error flattened_arr_list = array1.flatten()
print(flattened_arr_list)

输出

[1 2 3 4]
Traceback (most recent call last):
  File "<string>", line 13, in <module>
ERROR!
AttributeError: 'list' object has no attribute 'flatten'
  • flatten() 始终返回原始数组的副本,而 ravel() 仅在必要时才创建副本。

要了解更多信息,请访问 NumPy flatten()

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战