NumPy numpy.ravel()的使用
Python的numpy模块提供了一个名为numpy.ravel的函数,用于将2维数组或多维数组转换为一个连续的扁平化数组。返回的数组与源数组或输入数组具有相同的数据类型。如果输入数组是一个掩码数组,返回的数组也将是一个掩码数组。
语法
numpy.ravel(x, order='C')
参数
x: 类似数组
这个参数定义了我们想要转换成连续平坦数组的输入数组。数组元素按照order参数指定的顺序读取,并打包为一个一维数组。
order: {‘C’,’F’, ‘A’, ‘K’}(可选)
如果将order参数设置为’C’,则意味着数组以行优先的顺序被平坦化。如果设置为’F’,则数组以列优先的顺序被平坦化。只有在’A’是Fortran连续存储时,将数组以列优先的顺序被平坦化,并且将order参数设置为’A’时,才会发生。最后一个order值是’K’,它按照元素在内存中出现的顺序将数组平坦化。默认情况下,该参数设置为’C’。
返回
这个函数返回一个连续的平坦数组,其数据类型与输入数组相同,形状为 ( x.size )。
示例1
import numpy as np
x = np.array([[1, 3, 5], [11, 35, 56]])
y=np.ravel(x)
y
输出:
array([ 1, 3, 5, 11, 35, 56])
在上面的代码中
- 我们使用别名np导入了numpy库。
- 我们使用np.array()函数创建了一个数组 ‘x’ 。
- 我们声明了变量y并赋值为np.ravel()函数的返回值。
- 我们将数组 ‘x’ 传递给函数。
- 最后,我们尝试打印变量 y 的值。
输出结果中,数组的值以一个连续的平坦数组的形式显示。
示例2
import numpy as np
x = np.array([[1, 3, 5], [11, 35, 56]])
y = np.ravel(x, order='F')
z = np.ravel(x, order='C')
p = np.ravel(x, order='A')
q = np.ravel(x, order='K')
y
z
p
q
输出:
array([ 1, 11, 3, 35, 5, 56])
array([ 1, 3, 5, 11, 35, 56])
array([ 1, 3, 5, 11, 35, 56])
array([ 1, 3, 5, 11, 35, 56])
示例3
import numpy as np
x = np.arange(12).reshape(3,2,2).swapaxes(1,2)
x
y=np.ravel(a, order='C')
y
z=np.ravel(a, order='K')
z
q=np.ravel(a, order='A')
q
输出:
array([[[ 0, 2],
[ 1, 3]],
[[ 4, 6],
[ 5, 7]],
[[ 8, 10],
[ 9, 11]]])
array([ 0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11])
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
array([ 0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11])
在上述代码中
- 我们使用别名np导入了numpy。
- 我们使用np.arange()函数创建了一个数组 ‘x’ 。
- 我们使用 reshape() 和 np.swapaxes() 函数改变了它的形状并交换了轴。
- 我们声明了变量y、z和q,并分配了np.ravel()函数的返回值。
- 我们在函数中传递了数组 ‘x’ 和顺序 C 、 K 和 A 。
- 最后,我们试图打印 y 的值。
在输出中,数组的值显示为一个连续的展平数组。