maxframe.tensor.ravel#

maxframe.tensor.ravel(a, order='C')[源代码]#

返回一个连续的扁平化张量。

返回一个包含输入元素的1维张量。仅在需要时才会进行复制。

参数:
  • a (array_like) -- 输入张量。a 中的元素被打包成一个1维张量。

  • order ({'C','F', 'A', 'K'}, optional) -- 使用此索引顺序读取 a 中的元素。'C' 表示按行主序(C 风格)索引元素,最后一个轴索引变化最快,第一个轴索引变化最慢。'F' 表示按列主序(Fortran 风格)索引元素,第一个索引变化最快,最后一个索引变化最慢。注意,'C' 和 'F' 选项不考虑底层数组的内存布局,仅涉及轴索引的顺序。'A' 表示如果 a 在内存中是 Fortran 连续 的,则以类似 Fortran 的索引顺序读取元素,否则按 C 风格顺序读取。'K' 表示按照元素在内存中出现的顺序读取,但在步长为负时会反转数据。默认使用 'C' 索引顺序。

返回:

y -- 如果 a 是矩阵,则 y 是一个1维张量;否则 y 是与 a 相同子类型的张量。返回数组的形状为 (a.size,)。矩阵为向后兼容而做了特殊处理。

返回类型:

array_like

参见

Tensor.flat

数组上的1维迭代器。

Tensor.flatten

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

Tensor.reshape

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

示例

它等价于 reshape(-1)

>>> import maxframe.tensor as mt
>>> x = mt.array([[1, 2, 3], [4, 5, 6]])
>>> print(mt.ravel(x).execute())
[1 2 3 4 5 6]
>>> print(x.reshape(-1).execute())
[1 2 3 4 5 6]
>>> print(mt.ravel(x.T).execute())
[1 4 2 5 3 6]
>>> a = mt.arange(12).reshape(2,3,2).swapaxes(1,2); a.execute()
array([[[ 0,  2,  4],
        [ 1,  3,  5]],
       [[ 6,  8, 10],
        [ 7,  9, 11]]])
>>> a.ravel().execute()
array([ 0,  2,  4,  1,  3,  5,  6,  8, 10,  7,  9, 11])