gpt4 book ai didi

arrays - 有没有什么有效的简单方法可以用 Mathematica 比较两个长度相同的列表?

转载 作者:行者123 更新时间:2023-12-04 01:23:23 26 4
gpt4 key购买 nike

给定两个列表 A={a1,a2,a3,...an}B={b1,b2,b3,...bn} , 我会说 A>=B当且仅当所有 ai>=bi .

有两个列表的内置逻辑比较,A==B ,但没有 A>B .
我们是否需要像这样比较每个元素
And@@Table[A[[i]]>=B[[i]],{i,n}]
有没有更好的技巧来做到这一点?

编辑:
非常感谢你们所有人。

这里还有一个问题:

如何在 N 个列表中找到最大列表(如果存在)?

Any efficient easy way to find the maximum list among N lists with the same length using Mathematica?

最佳答案

方法一 : 我更喜欢这个方法。

NonNegative[Min[a - b]]

方法二 : 这只是为了好玩。正如列昂尼德指出的那样,我使用的数据被赋予了一些不公平的优势。
如果进行成对比较,并在适当的时候返回 False 和 Break,
那么循环可能更有效(尽管我通常在 mma 中避开循环):
result = True;
n = 1; While[n < 1001, If[a[[n]] < b[[n]], result = False; Break[]]; n++]; result

10^6 个数字列表的一些时序比较:
a = Table[RandomInteger[100], {10^6}];
b = Table[RandomInteger[100], {10^6}];

(* OP's method *)
And @@ Table[a[[i]] >= b[[i]], {i, 10^6}] // Timing

(* acl's uncompiled method *)
And @@ Thread[a >= b] // Timing

(* Leonid's method *)
lessEqual[a, b] // Timing

(* David's method #1 *)
NonNegative[Min[a - b]] // Timing

timings 2

编辑:我删除了我的方法 #2 的时间,因为它们可能会产生误导。方法#1 更适合作为通用方法。

关于arrays - 有没有什么有效的简单方法可以用 Mathematica 比较两个长度相同的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8885505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com