numpy.ravel

numpy.ravel(a, order='C')[源代码]

返回一个连续的扁平数组。

返回包含输入元素的一维数组。只有在需要时才复印。

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

参数
aarray_like

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

order'C'、'F'、'A'、'K',可选

元素 a 使用此索引顺序读取。“C”表示按行主索引、C样式顺序对元素进行索引,最后一个轴索引更改得最快,返回到第一个轴索引更改得最慢。”f'表示按FORTRAN样式的列主顺序对元素进行索引,第一个索引更改得最快,最后一个索引更改得最慢。请注意,“c”和“f”选项不考虑底层数组的内存布局,只引用轴索引的顺序。”“a”表示按类似于Fortran的索引顺序读取元素,如果 a 是FORTRAN语言 邻接的 在内存中,C-like顺序不同。”k'表示按照元素在内存中出现的顺序读取元素,但在步幅为负时反转数据除外。默认情况下,使用“C”索引顺序。

返回
yarray_like

Y是与相同子类型的数组 a 具有形状 (a.size,) . 注意,对于向后兼容性,如果 a 是一个矩阵,那么y是一个一维数组。

参见

ndarray.flat

数组上的一维迭代器。

ndarray.flatten

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

ndarray.reshape

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

笔记

在row major中,C样式顺序,在二维中,行索引变化最慢,列索引变化最快。这可以推广到多个维度,其中行主顺序意味着沿第一个轴的索引变化最慢,而沿最后一个最快的索引变化最慢。与之相对的是FORTRAN样式的列主索引排序。

在尽可能多的情况下需要视图时, arr.reshape(-1) 可能更好。

实例

它相当于 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])