numpy.ravel #

麻木的。ravel ( a , order = 'C' ) [来源] #

返回连续的展平数组。

返回包含输入元素的一维数组。仅在需要时才制作副本。

从 NumPy 1.10 开始,返回的数组将与输入数组具有相同的类型。 (例如,对于屏蔽数组输入,将返回屏蔽数组)

参数
类似数组

输入数组。a中的元素按照order指定的顺序读取 ,并打包为一维数组。

顺序{'C','F', 'A', 'K'},可选

使用此索引顺序读取a的元素。 'C' 表示按行主、C 样式顺序对元素进行索引,最后一个轴索引变化最快,回到第一个轴索引变化最慢。 'F' 表示按列主、Fortran 风格的顺序对元素进行索引,第一个索引变化最快,最后一个索引变化最慢。请注意,“C”和“F”选项不考虑底层数组的内存布局,仅涉及轴索引的顺序。 'A' 表示如果a在内存中是 Fortran连续的,则按类似 Fortran 的索引顺序读取元素,否则按类似 C 的顺序读取元素。 “K”表示按照元素在内存中出现的顺序读取元素,但当步幅为负时反转数据除外。默认情况下,使用“C”索引顺序。

返回
y类似数组

y 是与a具有相同子类型的连续一维数组,形状为(a.size,)。请注意,为了向后兼容,矩阵是特殊情况,如果a是矩阵,则 y 是一维 ndarray。

也可以看看

ndarray.flat

数组上的一维迭代器。

ndarray.flatten

按行优先顺序排列的数组元素的一维数组副本。

ndarray.reshape

更改数组的形状而不更改其数据。

笔记

在行优先、C 风格顺序中,在二维中,行索引变化最慢,列索引变化最快。这可以推广到多个维度,其中行主顺序意味着沿第一个轴的索引变化最慢,而沿最后一个轴的索引变化最快。对于以列为主、Fortran 风格的索引排序,则相反。

当在尽可能多的情况下需要视图时,arr.reshape(-1) 可能更可取。但是,在可选 参数中ravel支持,但不支持。Korderreshape

例子

它相当于.reshape(-1, order=order)

>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.ravel(x)
array([1, 2, 3, 4, 5, 6])
>>> x.reshape(-1)
array([1, 2, 3, 4, 5, 6])
>>> np.ravel(x, order='F')
array([1, 4, 2, 5, 3, 6])

order为 'A' 时,它将保留数组的 'C' 或 'F' 顺序:

>>> np.ravel(x.T)
array([1, 4, 2, 5, 3, 6])
>>> np.ravel(x.T, order='A')
array([1, 2, 3, 4, 5, 6])

order为 'K' 时,它将保留既不是 'C' 也不是 'F' 的顺序,但不会反转轴:

>>> a = np.arange(3)[::-1]; a
array([2, 1, 0])
>>> a.ravel(order='C')
array([2, 1, 0])
>>> a.ravel(order='K')
array([2, 1, 0])
>>> a = np.arange(12).reshape(2,3,2).swapaxes(1,2); a
array([[[ 0,  2,  4],
        [ 1,  3,  5]],
       [[ 6,  8, 10],
        [ 7,  9, 11]]])
>>> a.ravel(order='C')
array([ 0,  2,  4,  1,  3,  5,  6,  8, 10,  7,  9, 11])
>>> a.ravel(order='K')
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])