numpy.ndarray.flat/flatten 与 Spark 下的 flatMap

来源:互联网 发布:mh370调查终结篇 知乎 编辑:程序博客网 时间:2024/06/05 16:19

numpy.ndarray.flat/flatten

flat:使平坦,在编程上就对应着二维变一维。

  • (1)numpy.ndarray.flat 和 numpy,ndarray.T 一样不是函数调用,因此不可以跟函数调用操作符(也即一对小括号),因此也不可以指定平坦化的参数,比如按行平坦还是按列平坦,其默认的 flat 的动作是逐行(row-major)进行的。

    >>> import numpy as np>>> X = np.random.randint(0, 5, (2, 3))array([[3, 0, 2],       [1, 2, 2]])>>> x = X.flat>>> x<numpy.flatiter object at 0x9e82278>                            # 不直接返回一维数组                            # 但可直接索引>>> x[0]>>> x[3]1>>> np.array(x)array([3, 0, 2, 1, 2, 2])
  • (2)numpy.ndarray.flatten() 是函数调用,可以指定平坦化的参数。

    ndarray.flatten(order='C')

    可选参数,order:

    • (1)’C’:C-style,行序优先
    • (2)’F’:Fortran-style,列序优先
    • (3)’A’:保持
    • (4)默认为’C’

Spark 下的 flatMap

Spark 下的 flatMap 就类似于 numpyt 对多维数组的 flat,也即按行序进行扁平化;

  • Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;

  • 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:

    • 操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象

    • 操作2:最后将所有对象合并为一个对象

0 0
原创粉丝点击