gpt4 book ai didi

wolfram-mathematica - 在 Mathematica 的条件查询/操作中添加约束

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

我使用以下函数对列表执行条件操作:

consider[data_, conditionCOL_, conditionVAL_, listOfCol_] :=
Select[data, (#[[conditionCOL]] == conditionVAL) &][[All, listOfCol]]

考虑以下示例:

dalist = Join[Tuples[Range[4], 2]\[Transpose], {Range[16], Range[17, 32, 1]}
]\[Transpose];

enter image description here

我使用以下方法获取函数定义的特定列的方法。这将输出第 3 列和第 4 列条目的平均值,其中第 1 列中的相应条目等于 2

Mean@consider[dalist, 1, 2, {3, 4}]

enter image description here

现在,我想在要平均的值上添加约束/阈值:

平均以下值:

  • 高于最小值(例如 3)
  • 低于最大值(例如 25)

下面给出了在上述约束条件下应计算其平均值的值的示例。

enter image description here

最佳答案

由于不清楚您是只想从平均中排除限制之外的点,还是决定是否执行平均,我将解决这两个问题。您可以使用以下函数对 consider 函数的结果进行后处理(它们非常具体,具体取决于您的数据格式):

filter[data : {{_, _} ..}, {min_, max_}] := 
Select[data, min < #[[1]] < max && min < #[[2]] < max &]

dataWithinLimitsQ[data : {{_, _} ..}, {min_, max_}] :=
data == filter[data, {min, max}]

meanFiltered[data : {{_, _} ..}, {min_, max_}] :=
Mean@filter[data, {min, max}]

以下是如何使用它们:

In[365]:= dalist=Join[Tuples[Range[4],2]\[Transpose],{Range[16],Range[17,32,1]}]\[Transpose]
Out[365]= {{1,1,1,17},{1,2,2,18},{1,3,3,19},{1,4,4,20},{2,1,5,21},{2,2,6,22},{2,3,7,23},
{2,4,8,24},{3,1,9,25},{3,2,10,26},{3,3,11,27},{3,4,12,28},{4,1,13,29},{4,2,14,30},{4,3,15,31},
{4,4,16,32}}

In[378]:= considered = consider[dalist,1,1,{3,4}]

Out[378]= {{1,17},{2,18},{3,19},{4,20}}

In[379]:= filter[considered,{2,21}]

Out[379]= {{3,19},{4,20}}

In[380]:= dataWithinLimitsQ[considered,{2,21}]

Out[380]= False

In[381]:= meanFiltered[considered,{2,21}]

Out[381]= {7/2,39/2}

关于wolfram-mathematica - 在 Mathematica 的条件查询/操作中添加约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6280568/

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