numpy.ravel
numpy.ravel(a, order='C') [source]
返回一个连续的扁平数组。
返回包含输入元素的一维数组。 仅在需要时才进行复制。
从NumPy 1.10开始,返回的数组将具有与输入数组相同的类型。 (例如,掩码数组输入将返回一个掩码数组)
参数 : | a :array_like 输入数组。 将按顺序指定的顺序读取a中的元素, 并将其打包为一维数组。 order : 使用此索引顺序读取a的元素。 'C'表示以行为主的C样式索引元素, 最后一个轴索引更改最快,回到第一个轴索引更改最慢。 'F'表示以Fortran样式的列优先顺序索引元素, 第一个索引更改最快, 最后一个索引更改最慢。 请注意,'C'和'F'选项不考虑基础数组的内存布局, 仅涉及轴索引的顺序。 'A'表示如果a在内存中是连续的, 则以类似于Fortran的索引顺序读取元素,否则为类似于C的顺序。 'K'表示按顺序在内存中读取元素,但当步幅为负时反转数据除外。 默认情况下,使用'C'索引顺序。 |
返回值 : | y :array_like y是与a具有相同子类型的数组,其形状为 请注意,矩阵是特殊情况下的向后兼容性,如果a是矩阵, 则y是一维ndarray。 |
Notes
在二维中,以行优先的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])