flatten()
方法在不改变数据的情况下展平 NumPy 数组。
示例
import numpy as np
# create a two-dimensional array
array1 = np.array([[0, 1], [2, 3]])
# flatten an array
array2 = array1.flatten()
print(array2)
# Output: [0 1 2 3]
在此,array1 是一个二维数组,它被展平成一个一维数组,所有元素都保持不变。
flatten() 语法
flatten()
的语法是
ndarray.flatten(order)
flatten() 参数
flatten()
方法接受一个参数
order
(可选) - 指定展平数组元素的顺序
flatten() 返回值
flatten()
方法返回展平后的一维数组。
示例 1:展平多维数组
import numpy as np
# create a 3-D array
array1 = np.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])
# flatten the array
array2 = array1.flatten()
print(array2)
输出
[0 1 2 3 4 5 6 7]
指定展平数组的顺序
通过传递 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 = array1.flatten(order = 'C')
print("C:",array2)
# flatten the array column-wise
array3 = array1.flatten( order = 'F')
print("F:",array3)
# flatten the array to original array's order
array4 = array1.flatten(order = 'A')
print("A:",array2)
# flatten the array in the order they occur in memory
array5 = array1.flatten(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
raveledList = np.ravel(array1)
print(raveledList)
# using flatten with a list of arrays
# raises an error
flattenedList = array1.flatten()
print(flattenedList)
输出
[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 ravel()。