reduce 订阅
reduce,英语单词,及物动词、不及物动词,作及物动词时意为“减少;降低;使处于;把…分解”,作不及物动词时意为“减少;缩小;归纳为”。 展开全文
reduce,英语单词,及物动词、不及物动词,作及物动词时意为“减少;降低;使处于;把…分解”,作不及物动词时意为“减少;缩小;归纳为”。
信息
外文名
reduce
词    性
及物动词、不及物动词
reduce单词发音
英[rɪˈdjuːs]美[rɪˈduːs] [1] 
收起全文
精华内容
下载资源
问答
  • reduce

    千次阅读 2018-09-16 01:57:35
    reduce 收敛 4个参数 返回的是叠加后的结果 原数组不发生变化 “` //prev代表的是数组的第一项,next是数组的第二项 //第二次prev是undefined,next是数组的第三项 [1,2,3,4,5].reduce( function(prev,next,...

    reduce 收敛 4个参数 返回的是叠加后的结果 原数组不发生变化

    “`

    //prev代表的是数组的第一项,next是数组的第二项
    //第二次prev是undefined,next是数组的第三项
    [1,2,3,4,5].reduce( function(prev,next,index,item){
    console.log(arguments);
    return prev+next; //本次的返回值 回座位下一次的prev
    // return prev+next.price*next.count
    //默认指定第一次prev
    })

    展开全文
  • tensorflow中 tf.reduce_mean函数

    万次阅读 多人点赞 2018-04-03 08:44:42
    tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。 reduce_mean(input_tensor, axis=None, keep_dims=False, na...

     

     

    tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。

     

     

    reduce_mean(input_tensor,
                    axis=None,
                    keep_dims=False,
                    name=None,
                    reduction_indices=None)

     

    • 第一个参数input_tensor: 输入的待降维的tensor;
    • 第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
    • 第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
    • 第四个参数name: 操作的名称;
    • 第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;

     

    以一个维度是2,形状是[2,3]的tensor举例:

    import tensorflow as tf
    
    x = [[1,2,3],
          [1,2,3]]
    
    xx = tf.cast(x,tf.float32)
    
    mean_all = tf.reduce_mean(xx, keep_dims=False)
    mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False)
    mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False)
    
    
    with tf.Session() as sess:
        m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1])
    
    print m_a    # output: 2.0
    print m_0    # output: [ 1.  2.  3.]
    print m_1    #output:  [ 2.  2.]

    如果设置保持原来的张量的维度,keep_dims=True ,结果:

    print m_a    # output: [[ 2.]]
    print m_0    # output: [[ 1.  2.  3.]]
    print m_1    #output:  [[ 2.], [ 2.]]
    
    
    
    
    

     

    类似函数还有:

    • tf.reduce_sum :计算tensor指定轴方向上的所有元素的累加和;
    • tf.reduce_max  :  计算tensor指定轴方向上的各个元素的最大值;
    • tf.reduce_all :  计算tensor指定轴方向上的各个元素的逻辑和(and运算);
    • tf.reduce_any:  计算tensor指定轴方向上的各个元素的逻辑或(or运算);
    展开全文
  • 用通俗易懂的大白话讲解Map/Reduce原理

    万次阅读 多人点赞 2014-03-31 16:20:44
    下面是我自己的微信公众号(不定期更新 JAVA 、大数据、个人成长等干货) ...Hadoop简介Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及...

    下面是我自己的微信公众号(不定期更新 JAVA 、大数据、个人成长等干货)

    1、公众号上有经典的技术电子书可以免费领

    2、大家有问题可以在公众号问我,只要你问了我就会回复(相互交流)

     

    也可以扫描下面二维码, 加我个人微信,和我直接沟通

    Hadoop简介

    Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等.

    这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop:




    1.什么是Map/Reduce,看下面的各种解释:

    (1)MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程。

    (2)Mapreduce是一种编程模型,是一种编程方法,抽象理论。

    (3)下面是一个关于一个程序员是如何个妻子讲解什么是MapReduce?文章很长请耐心的看。

    我问妻子:“你真的想要弄懂什么是MapReduce?” 她很坚定的回答说“是的”。 因此我问道:

    我: 你是如何准备洋葱辣椒酱的?(以下并非准确食谱,请勿在家尝试)

    妻子: 我会取一个洋葱,把它切碎,然后拌入盐和水,最后放进混合研磨机里研磨。这样就能得到洋葱辣椒酱了。


    妻子: 但这和MapReduce有什么关系?

    我: 你等一下。让我来编一个完整的情节,这样你肯定可以在15分钟内弄懂MapReduce.

    妻子: 好吧。

    我:现在,假设你想用薄荷、洋葱、番茄、辣椒、大蒜弄一瓶混合辣椒酱。你会怎么做呢?

    妻子: 我会取薄荷叶一撮,洋葱一个,番茄一个,辣椒一根,大蒜一根,切碎后加入适量的盐和水,再放入混合研磨机里研磨,这样你就可以得到一瓶混合辣椒酱了。

    我: 没错,让我们把MapReduce的概念应用到食谱上。Map和Reduce其实是两种操作,我来给你详细讲解下。
    Map(映射): 把洋葱、番茄、辣椒和大蒜切碎,是各自作用在这些物体上的一个Map操作。所以你给Map一个洋葱,Map就会把洋葱切碎。 同样的,你把辣椒,大蒜和番茄一一地拿给Map,你也会得到各种碎块。 所以,当你在切像洋葱这样的蔬菜时,你执行就是一个Map操作。 Map操作适用于每一种蔬菜,它会相应地生产出一种或多种碎块,在我们的例子中生产的是蔬菜块。在Map操作中可能会出现有个洋葱坏掉了的情况,你只要把坏洋葱丢了就行了。所以,如果出现坏洋葱了,Map操作就会过滤掉坏洋葱而不会生产出任何的坏洋葱块。


    Reduce(化简):在这一阶段,你将各种蔬菜碎都放入研磨机里进行研磨,你就可以得到一瓶辣椒酱了。这意味要制成一瓶辣椒酱,你得研磨所有的原料。因此,研磨机通常将map操作的蔬菜碎聚集在了一起。

    妻子: 所以,这就是MapReduce?

    我: 你可以说是,也可以说不是。 其实这只是MapReduce的一部分,MapReduce的强大在于分布式计算。

    妻子: 分布式计算? 那是什么?请给我解释下吧。

    我: 没问题。

    我: 假设你参加了一个辣椒酱比赛并且你的食谱赢得了最佳辣椒酱奖。得奖之后,辣椒酱食谱大受欢迎,于是你想要开始出售自制品牌的辣椒酱。假设你每天需要生产10000瓶辣椒酱,你会怎么办呢?

    妻子: 我会找一个能为我大量提供原料的供应商。

    我:是的..就是那样的。那你能否独自完成制作呢?也就是说,独自将原料都切碎? 仅仅一部研磨机又是否能满足需要?而且现在,我们还需要供应不同种类的辣椒酱,像洋葱辣椒酱、青椒辣椒酱、番茄辣椒酱等等。

    妻子: 当然不能了,我会雇佣更多的工人来切蔬菜。我还需要更多的研磨机,这样我就可以更快地生产辣椒酱了。
    我:没错,所以现在你就不得不分配工作了,你将需要几个人一起切蔬菜。每个人都要处理满满一袋的蔬菜,而每一个人都相当于在执行一个简单的Map操作。每一个人都将不断的从袋子里拿出蔬菜来,并且每次只对一种蔬菜进行处理,也就是将它们切碎,直到袋子空了为止。
    这样,当所有的工人都切完以后,工作台(每个人工作的地方)上就有了洋葱块、番茄块、和蒜蓉等等。


    妻子:但是我怎么会制造出不同种类的番茄酱呢?

    我:现在你会看到MapReduce遗漏的阶段—搅拌阶段。MapReduce将所有输出的蔬菜碎都搅拌在了一起,这些蔬菜碎都是在以key为基础的 map操作下产生的。搅拌将自动完成,你可以假设key是一种原料的名字,就像洋葱一样。 所以全部的洋葱keys都会搅拌在一起,并转移到研磨洋葱的研磨器里。这样,你就能得到洋葱辣椒酱了。同样地,所有的番茄也会被转移到标记着番茄的研磨器里,并制造出番茄辣椒酱。

    (4)上面都是从理论上来说明什么是MapReduce,那么咱们在MapReduce产生的过程和代码的角度来理解这个问题。
    如果想统计下过去10年计算机论文出现最多的几个单词,看看大家都在研究些什么,那收集好论文后,该怎么办呢? 

      方法一:

          我可以写一个小程序,把所有论文按顺序遍历一遍,统计每一个遇到的单词的出现次数,最后就可以知道哪几个单词最热门了。 这种方法在数据集比较小时,是非常有效的,而且实现最简单,用来解决这个问题很合适。 

     方法二:

           写一个多线程程序,并发遍历论文。 
      这个问题理论上是可以高度并发的,因为统计一个文件时不会影响统计另一个文件。当我们的机器是多核或者多处理器,方法二肯定比方法一高效。但是写一个多线程程序要比方法一困难多了,我们必须自己同步共享数据,比如要防止两个线程重复统计文件。 

    方法三:

          把作业交给多个计算机去完成。 
      我们可以使用方法一的程序,部署到N台机器上去,然后把论文集分成N份,一台机器跑一个作业。这个方法跑得足够快,但是部署起来很麻烦,我们要人工把程序copy到别的机器,要人工把论文集分开,最痛苦的是还要把N个运行结果进行整合(当然我们也可以再写一个程序)。 

      方法四:

          让MapReduce来帮帮我们吧! 

      MapReduce本质上就是方法三,但是如何拆分文件集,如何copy程序,如何整合结果这些都是框架定义好的。我们只要定义好这个任务(用户程序),其它都交给MapReduce。



    map函数和reduce函数  


    map函数和reduce函数是交给用户实现的,这两个函数定义了任务本身。 

      map函数:接受一个键值对(key-value pair),产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。 

      reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。 

      统计词频的MapReduce函数的核心代码非常简短,主要就是实现这两个函数。 

      map(String key, String value): 

      // key: document name 

      // value: document contents 

      for each word w in value: 

      EmitIntermediate(w, "1"); 

      reduce(String key, Iterator values): 

      // key: a word 

      // values: a list of counts 

      int result = 0; 

      for each v in values: 

      result += ParseInt(v); 

      Emit(AsString(result)); 

      在统计词频的例子里,map函数接受的键是文件名,值是文件的内容,map逐个遍历单词,每遇到一个单词w,就产生一个中间键值对<w, "1">,这表示单词w咱又找到了一个;MapReduce将键相同(都是单词w)的键值对传给reduce函数,这样reduce函数接受的键就是单词w,值是一串"1"(最基本的实现是这样,但可以优化),个数等于键为w的键值对的个数,然后将这些“1”累加就得到单词w的出现次数。最后这些单词的出现次数会被写到用户定义的位置,存储在底层的分布式存储系统(GFS或HDFS)。 




    工作原理

     

      
    上图是论文里给出的流程图。一切都是从最上方的user program开始的,user program链接了MapReduce库,实现了最基本的Map函数和Reduce函数。图中执行的顺序都用数字标记了。

      1.MapReduce库先把user program的输入文件划分为M份(M为用户定义),每一份通常有16MB到64MB,如图左方所示分成了split0~4;然后使用fork将用户进程拷贝到集群内其它机器上。 

      2.user program的副本中有一个称为master,其余称为worker,master是负责调度的,为空闲worker分配作业(Map作业或者Reduce作业),worker的数量也是可以由用户指定的。 

      3.被分配了Map作业的worker,开始读取对应分片的输入数据,Map作业数量是由M决定的,和split一一对应;Map作业从输入数据中抽取出键值对,每一个键值对都作为参数传递给map函数,map函数产生的中间键值对被缓存在内存中。 

      4.缓存的中间键值对会被定期写入本地磁盘,而且被分为R个区,R的大小是由用户定义的,将来每个区会对应一个Reduce作业;这些中间键值对的位置会被通报给master,master负责将信息转发给Reduce worker。 

      5.master通知分配了Reduce作业的worker它负责的分区在什么位置(肯定不止一个地方,每个Map作业产生的中间键值对都可能映射到所有R个不同分区),当Reduce worker把所有它负责的中间键值对都读过来后,先对它们进行排序,使得相同键的键值对聚集在一起。因为不同的键可能会映射到同一个分区也就是同一个Reduce作业(谁让分区少呢),所以排序是必须的。 

      6.reduce worker遍历排序后的中间键值对,对于每个唯一的键,都将键与关联的值传递给reduce函数,reduce函数产生的输出会添加到这个分区的输出文件中。 

      6.当所有的Map和Reduce作业都完成了,master唤醒正版的user program,MapReduce函数调用返回user program的代码。 

      所有执行完毕后,MapReduce输出放在了R个分区的输出文件中(分别对应一个Reduce作业)。用户通常并不需要合并这R个文件,而是将其作为输入交给另一个MapReduce程序处理。整个过程中,输入数据是来自底层分布式文件系统(GFS)的,中间数据是放在本地文件系统的,最终输出数据是写入底层分布式文件系统(GFS)的。而且我们要注意Map/Reduce作业和map/reduce函数的区别:Map作业处理一个输入数据的分片,可能需要调用多次map函数来处理每个输入键值对;Reduce作业处理一个分区的中间键值对,期间要对每个不同的键调用一次reduce函数,Reduce作业最终也对应一个输出文件。

    总结:

    通过以上你是否了解什么是MapReduce了那,什么是key,怎么过滤有效数据,怎么得到自己想要的数据。
    MapReduce是一种编程思想,可以使用java来实现,C++来实现。Map的作用是过滤一些原始数据,Reduce则是处理这些数据,得到我们想要的结果,比如你想造出番茄辣椒酱。也就是我们使用hadoop,比方来进行日志处理之后,得到我们想要的关心的数据

                                                    
     

    展开全文
  • MPI Reduce and Allreduce

    千次阅读 2018-04-08 14:11:00
    以下内容翻译自:MPI Reduce and Allreduce 在上一课中,我们介绍了使用MPI_Scatter和MPI_Gather执行MPI并行排序计算的应用示例。我们将通过MPI_Reduce和MPI_Allreduce进一步扩展集合通信例程。 注——本...

    以下内容翻译自:MPI Reduce and Allreduce

    上一课中,我们介绍了使用MPI_ScatterMPI_Gather执行MPI并行排序计算的应用示例。我们将通过MPI_ReduceMPI_Allreduce进一步扩展集合通信例程。

    注——本网站的所有代码均位于GitHub上。本教程的代码位于tutorials/mpi-reduce-and-allreduce/code下。

    规约简介

    Reduce是函数式编程的经典概念。数据规约涉及通过函数将一组数字缩减为一个较小的集合。例如,假设我们有一个数字列表[1,2,3,4,5]。用sum函数缩减这个数字列表将产生sum([1,2,3,4,5])= 15。同样,乘法规约将产生乘法([1, 2, 3, 4, 5]) = 120

    正如您可能想象的那样,将规约函数应用于一组分布式数字可能非常麻烦。除此之外,很难编制非交换规约,即必须按照设定的顺序进行规约。幸运的是,MPI有一个方便的MPI_Reduce函数,它可以处理程序员在并行应用程序中需要做的几乎所有常见的规约。

    MPI_Reduce

    MPI_Gather类似,MPI_Reduce在每个进程上接收一组输入元素,并将一组输出元素返回到根进程。输出元素包含规约的结果。 MPI_Reduce的原型如下所示:

    MPI_Reduce(
        void* send_data,
        void* recv_data,
        int count,
        MPI_Datatype datatype,
        MPI_Op op,
        int root,
        MPI_Comm communicator)
    

    send_data参数是一组每个进程准备规约的数据,其类型为datatyperecv_data只与具有根rank的进程相关。recv_data数组包含规约的结果并且其大小为sizeof(datatype) * countop参数是对数据应用的操作。MPI包含一组可以使用的通用约简操作。虽然可以定义自定义规约操作,但这超出了本课的范围。MPI定义的规约操作包括:

    • MPI_MAX ——返回最大元素。
    • MPI_MIN ——返回最小元素。
    • MPI_SUM ——元素求和。
    • MPI_PROD——将所有元素相乘。
    • MPI_LAND——执行元素逻辑与。
    • MPI_LOR ——执行元素逻辑或。
    • MPI_BAND ——对元素的位进行按位与。
    • MPI_BOR ——对元素的位进行按位或。
    • MPI_MAXLOC ——返回最大值及对应的进程rank。
    • MPI_MINLOC ——返回最小值及对应的进程rank。

    下面是MPI_Reduce通信模式的图示。
    mpi_reduce_1
    在上面,每个进程都包含一个整数。根进程0调用MPI_Reduce以并使用MPI_SUM作为缩减操作。将这四个数字加起来并存储在根进程中。

    查看当进程包含多个元素时会发生什么对我们的理解非常有帮助。下图展示了每个进程中多个数字的规约。
    mpi_reduce_2
    上面的插图中每个进程都有两个元素。由此产生的求和发生在每个元素的基础上。 换句话说,不是将所有数组中的所有元素合并到一个元素中,而是将来自每个数组的第i个元素合并到进程0的结果数组中的第i个元素。

    现在您已经了解了MPI_Reduce的概念,我们可以进入一些代码示例。

    MPI_Reduce计算数字的平均值

    上一课中,我向您展示了如何使用MPI_ScatterMPI_Gather来计算平均值。 使用MPI_Reduce可以简化上一课的代码。以下是本课示例代码中reduce_avg.c的摘录。

    float *rand_nums = NULL;
    rand_nums = create_rand_nums(num_elements_per_proc);
    
    // Sum the numbers locally
    float local_sum = 0;
    int i;
    for (i = 0; i < num_elements_per_proc; i++) {
      local_sum += rand_nums[i];
    }
    
    // Print the random numbers on each process
    printf("Local sum for process %d - %f, avg = %f\n",
           world_rank, local_sum, local_sum / num_elements_per_proc);
    
    // Reduce all of the local sums into the global sum
    float global_sum;
    MPI_Reduce(&local_sum, &global_sum, 1, MPI_FLOAT, MPI_SUM, 0,
               MPI_COMM_WORLD);
    
    // Print the result
    if (world_rank == 0) {
      printf("Total sum = %f, avg = %f\n", global_sum,
             global_sum / (world_size * num_elements_per_proc));
    }
    

    在上面的代码中,每个进程创建随机数并进行local_sum计算。然后使用MPI_SUMlocal_sum规约到根进程。全局平均值是global_sum / (world_size * num_elements_per_proc)。如果您从repo的tutorials目录运行reduce_avg程序,则输出应与此类似。

    >>> cd tutorials
    >>> ./run.py reduce_avg
    mpirun -n 4  ./reduce_avg 100
    Local sum for process 0 - 51.385098, avg = 0.513851
    Local sum for process 1 - 51.842468, avg = 0.518425
    Local sum for process 2 - 49.684948, avg = 0.496849
    Local sum for process 3 - 47.527420, avg = 0.475274
    Total sum = 200.439941, avg = 0.501100
    

    现在是时候继续讨论``MPI_Reduce的兄弟——MPI_Allreduce`了。

    MPI_Allreduce

    许多并行应用程序需要所有进程访问规约的结果,而不仅是根进程。与MPI_AllgatherMPI_Gather的补充类似,MPI_Allreduce进行规约并将结果分发给所有进程。函数原型如下:

    MPI_Allreduce(
        void* send_data,
        void* recv_data,
        int count,
        MPI_Datatype datatype,
        MPI_Op op,
        MPI_Comm communicator)
    

    正如您可能已经注意到的,MPI_AllreduceMPI_Reduce相同,不同之处在于它不需要根进程ID(因为结果分发到所有进程)。以下说明了MPI_Allreduce的通信模式:

    MPI_Allreduce
    MPI_Allreduce相当于MPI_Reduce后跟MPI_Bcast。很简单,对吧?

    MPI_Allreduce计算标准差

    许多计算问题需要多次规约才能解决。该类问题的一个例子是找到分布的一组数字的标准差。也许有人已经忘记了,标准差是衡量数字与他们平均数之间的分散程度。较低的标准偏差意味着数字间更接近,反之亦然。

    要找到标准偏差,首先必须计算所有数字的平均值。在计算平均值之后,计算与平均值的平方差的和。平方差的和的平方根是最终结果。鉴于问题描述,我们知道至少会有两个所有数的和,转化为两个规约。课程代码中的reduce_stddev.c节选显示了MPI中的实现方法。

    rand_nums = create_rand_nums(num_elements_per_proc);
    
    // Sum the numbers locally
    float local_sum = 0;
    int i;
    for (i = 0; i < num_elements_per_proc; i++) {
      local_sum += rand_nums[i];
    }
    
    // Reduce all of the local sums into the global sum in order to
    // calculate the mean
    float global_sum;
    MPI_Allreduce(&local_sum, &global_sum, 1, MPI_FLOAT, MPI_SUM,
                  MPI_COMM_WORLD);
    float mean = global_sum / (num_elements_per_proc * world_size);
    
    // Compute the local sum of the squared differences from the mean
    float local_sq_diff = 0;
    for (i = 0; i < num_elements_per_proc; i++) {
      local_sq_diff += (rand_nums[i] - mean) * (rand_nums[i] - mean);
    }
    
    // Reduce the global sum of the squared differences to the root
    // process and print off the answer
    float global_sq_diff;
    MPI_Reduce(&local_sq_diff, &global_sq_diff, 1, MPI_FLOAT, MPI_SUM, 0,
               MPI_COMM_WORLD);
    
    // The standard deviation is the square root of the mean of the
    // squared differences.
    if (world_rank == 0) {
      float stddev = sqrt(global_sq_diff /
                          (num_elements_per_proc * world_size));
      printf("Mean - %f, Standard deviation = %f\n", mean, stddev);
    }
    

    在上面的代码中,每个进程计算元素的local_sum并使用MPI_Allreduce对它们进行求和。每个进程都获得全局和之后,计算平均值以便计算local_sq_diff。一旦计算出所有局部平方差,就可以使用MPI_Reduce找到global_sq_diff。然后,根进程可以通过取全局平方差的平均值的平方根来计算标准差。

    使用运行脚本运行示例代码会生成如下所示的输出:

    >>> ./run.py reduce_stddev
    mpirun -n 4  ./reduce_stddev 100
    Mean - 0.501100, Standard deviation = 0.301126
    

    接下来

    现在您已经熟悉了所有常见集合——MPI_BcastMPI_ScatterMPI_GatherMPI_Reduce,我们可以利用它们构建复杂的并行应用程序。在下一课中,我们将开始MPI组和通信者

    对于所有课程,请参阅MPI教程章节

    想贡献?

    这个网站完全托管在 GitHub上。本网站不再由原作者(Wes Kendall)积极贡献,但它放在GitHub上,希望其他人可以编写高质量的MPI教程。点击这里获取更多关于如何贡献的信息。

    展开全文
  • 在这里为大家介绍一下Python非常实用的Counter、defaultdict、map、reduce、filter、groupby的函数使用,提高大家在平时实用Python的效率计数器函数 Counter带默认值的字典 defaultdictmap函数reduce函数filter函数 ...
  • reduce用法

    千次阅读 2020-07-08 20:10:13
    reduce() 这个方法很牛逼 可以应用很多场景 简单介绍: reduce() 方法接收一个函数作为累加器, 数组中的每个值(从左至右) 开始缩减, 最终为一个值 其实 reduce 接收的就是一个 回调函数 , 去调用数组中的每一个...
  • python reduce

    千次阅读 2018-09-14 16:29:58
    reduce reduce()函数在库functools里,如果要使用它,要从这个库里导入。 语法: reduce(function,iterable,[,initializer]) function: 函数,有两个参数 interable: 可迭代对象 initializer: 初始化值,...
  • reduce函数

    2019-09-01 22:27:38
    reduce接受两个参数,第一个是一个函数,函数必须接受两个参数,第二个是序列,reduce把结果继续和序列的下一个元素做累积计算,效果如下: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) 使用lambda和...
  • Python进阶(三)-函数式编程之reduce()

    万次阅读 2017-03-15 16:33:35
    Python进阶(三)-函数式编程之reduce()  官方解释如下:   Apply function of two arguments cumulatively to the items of sequence, from left to right, so as to reduce the sequence to a single value. ...
  • reducereduceByKey区别

    千次阅读 2019-01-07 17:57:22
    1、reduce 是用于一元组,遍历一元组的数据,进行处理。 List&lt;Integer&gt; data = Arrays.asList(1,2,3,4,5,6); JavaRDD&lt;Integer&gt; parallelizeRdd = jsc.parallelize(data); Integer ...
  • reducereduceByKey详解

    千次阅读 2018-10-12 15:17:55
    reduce(binary_function)  reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。 val c = sc...
  • reduce方法

    千次阅读 2017-11-25 14:37:16
    ### 关于reduce方法 用于:遍历处理数组 可以看到reduce方法的第一个参数必须是一个函数(必填) 此函数第一个参数默认为上一次reduce遍历的返回值,初始值为数组第一项 const arr = [1, 2, 3, 4, 5]; const sum = ...
  • Reduce

    2016-11-12 00:49:31
    转自:Reduce类,保存在此,有助于Reduce执行过程的理解。 4.4 Reduce类 4.4.1 Reduce介绍 整完了Map,接下来就是Reduce了。YarnChild.main()—>ReduceTask.run()。ReduceTask.run方法开始和MapTask类似,包括...
  • MPI之Reduce和Allreduce

    万次阅读 2017-04-19 19:03:23
    Reduce——规约是来自函数式编程的一个经典概念。数据规约包含通过一个函数将一批数据分成较小的一批数据。比如将一个数组的元素通过加法函数规约为一个数字。二、MPI_Reduce 与MPI_Gather类似,MPI_Reduce在每个...
  • Spark-reducereduceByKey

    2019-02-27 14:59:57
    1.reduce reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。 ...
  • 2 Spark入门reducereduceByKey的操作

    万次阅读 2018-04-13 11:22:32
    reduce的主要作用就是计算。package reduce; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import...
  • 简而言之,reduce系列的函数都可在张量指定的维度上操作 目录 输入参数 tf.reduce_all 在boolean张量的维度上计算元素的 "逻辑和" tf.reduce_any 在boolean张量的维度上计算元素的 "逻辑或"...
  • reduce 函数

    2018-04-13 15:18:55
    数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。使用 reduce 方法时,你要传入一个回调函数,这个回调函数的参数是一个 累加器(比如例子中的 previousVal) 和当前值 (currentVal)。reduce 方法有一个...
  • reducereduceByKey 区别

    千次阅读 2016-12-13 13:54:34
    reduce 是一种聚合函数,可以把各个任务的执行结果汇集到一个节点,还可以指定自定义的函数传入 reduce 执行。==reduce 把同一个任务内的结果现在本地 Worker 节点进行聚合,再把结果传给 Driver 执行聚合。但最终...
  • Spark的reduceByKey和reduce

    千次阅读 2018-10-16 23:38:16
    reduce的操作对象是列表。 如rdd={1,2,3,3} rdd.reduce((x,y)=&gt; x+y)得到结果是:9 reduceByKey()的操作对象是元组。 如 rdd1={('panda',3),('pink',4)},rdd2={('panda',(3,2)),('pink',(4,3))} rdd....
  • reducereduceByKey的区别 1、reduce:把RDD中的每一个元素拿出来处理并形成一个新的RDD元素 (reduce是将元素一个一个的处理) 2.reduceByKey:把RDD中的key相同的一组数据拿出来处理,形成一个新的RDD里面放的...
  • reduce 方法

    千次阅读 2017-12-19 19:27:16
    数组的reduce方法,接收一个函数(必须)和指定的初始值(非必须)作为参数,函数有三个参数,分别为初始值,当前项,当前数组,进行累加或者累积操作,初始值为每次累加或者累计后的结果 注意:在ie9一下的浏览器...
  • Python reduce

    千次阅读 2016-10-16 23:35:17
    reduce函数:def reduce(function, iterable, initializer=None): it = iter(iterable) if initializer is None: try: initializer = next(it) except StopIteration:
  • reduce 用法

    千次阅读 2018-12-27 09:35:33
    array.reduce(callback[, initialValue])第一个参数是每一项上调用的函数,该函数有四个参数: accumulator:累加回调返回值;他是上一次调用时返回的累积值,或initValue; currentValue:数组中正在处理的元素; ...
  • tf.reduce_mean reduce_mean( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None ) 功能 求张量的平均值 同理 reduce_max 、 reduce_min 就是主要求 张量的最大值和...
  • Python reduce未定义

    2019-08-18 12:53:26
    Python reduce未定义 问题: name ‘reduce’ is not defined 解决: from functools import reduce 原因: 在python 3.0.0.0以后, reduce已经不在built-in function里了
  • Spark中reducereducebykey

    千次阅读 2018-05-22 19:51:39
    reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。具体过程,RDD...
  •         开篇语: 一直以来都知道数组有一个reduce方法,可是在工作过程中很少用到,对其用法...首先看一下reduce函数在mdn上的概念:The reduce() method executes a redu...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,012
精华内容 34,404
关键字:

reduce