dask.array.ravel

dask.array.ravel

dask.array.ravel(array_like)[源代码]

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

此文档字符串是从 numpy.ravel 复制而来的。

Dask 版本可能存在一些不一致性。

返回一个包含输入元素的一维数组。仅在需要时进行复制。

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

参数
aarray_like (Dask 中不支持)

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

顺序{‘C’,’F’, ‘A’, ‘K’}, 可选 (Dask 中不支持)

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

返回
yarray_like

y 是一个与 a 具有相同子类型的连续 1-D 数组,形状为 (a.size,)。注意,矩阵是为了向后兼容而特殊处理的,如果 a 是一个矩阵,那么 y 是一个 1-D ndarray。

参见

ndarray.flat

一维数组迭代器。

ndarray.flatten

按行主序复制数组元素的一维数组。

ndarray.reshape

在不改变数据的情况下改变数组的形状。

注释

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

当希望在尽可能多的情况下获得视图时,arr.reshape(-1) 可能是更好的选择。然而,ravel 支持在可选的 order 参数中使用 K,而 reshape 不支持。

示例

它等同于 reshape(-1, order=order)

>>> import numpy as np  
>>> 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])