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:最后将所有对象合并为一个对象