广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Mathematica怎么批量处理列表中的元素?

    来源:网络收集  点击:  时间:2024-06-15
    【导读】:
    对于一个数据列中的每个数据进行同样的函数运算是常见需求。本经验讲述Mathematica中带有Listable属性的系列函数(如Sqrt Sin Cos等)的性质,以及如何使用MapThread进行不带有列表元素的复杂的批量处理。工具/原料moreMathematica 11.0方法/步骤1/8分步阅读

    首先,Mathematica中常见的输入单个数据的数学运算函数,基本上都可以对列表进行批量计算,效果如下:Sqrt,+,-,*,/,Sin,Cos,Tan等等都是可以的。

    这样的计算将会分别对列表中的每个元素,或者对应元素进行。

    2/8

    对于多层列表,这些函数可以作用到每个层次。效果如图。

    3/8

    直接使用列表进行计算要注意,如果是双目运算,比如+,-,*,/等,两个列表必须有相同的结构。如下图,两个列表结构不同无法合并。

    4/8

    对于不带有Listable属性的函数,比如Norm求模函数(它会把列表当成向量,把二重列表当成矩阵),上面的用法失效。

    如下,我们尝试对一个向量列表求每个向量的模,然而Norm会视之为矩阵。

    5/8

    首先说较为一般的办法,就是使用Table函数。

    如下,使用下表]访问列表项,使用Length计算列表长度,使用Table进行批量计算。

    6/8

    接着,我们介绍一个非常有用的函数:MapThread。用法是:

    MapThread

    如下,我们使用Norm函数,作用于list列表,保留一层也就是把{1,2,3}这种视为一个整体,同时计算列表元素。

    7/8

    与Table函数相比较,MapThread函数性能稍有优势,且写法更加简洁。

    8/8

    对于带有Listable属性的函数,我们测试速度如下。可见,直接使用Listable函数与间接使用MapThread的性能不相上下。

    注意事项

    类似于MapThread函数,还有Thread函数效果类似,但是Thread函数不能设置保留层次。

    MATHEMATICA
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_903736.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-07 18:19:06  耗时:0.031
    0.0306s