【问题标题】:Evaluating and returning the value of a function over an array generated by iteration在迭代生成的数组上评估并返回函数的值
【发布时间】:2018-11-15 13:18:01
【问题描述】:

我目前正在编写一段代码,用于计算一组患者样本的非参数引导。我已经编写了该块,因此仅当我拒绝峰度测试的空值时才调用它(因为在此阶段考虑更密集的探索方法是不可行的)。这是当前代码块的构造(作为一个侧面,我不认为我可以提供我的实际数据)出于实际原因并且我不拥有它,所以我会尽量具体)

#create the list of subject ids
SUB_IDS=['values']
# this is a pandas data frame of all subjects' information.  Columns are: 
#Sub_ID, NG,C,ER
asbs=pd.DataFrame(['Values'])
for x in SUB_IDS:

    x_data=asbs[asbs['SUB_ID']==x]

    x_ng=x_data['NG']
    x_c=x_data['C']
    x_er=x_data['ER']

    a,b = sp.stats.kurtosistest(x_NG)
    c,d = sp.stats.kurtosistest(x_C)
    e,f = sp.stats.kurtosistest(x_ER)
    kurtosis_scores.append([x,a,b,c,d,e,f])
    # for somplicity we'll only focus on bootstrapping one feature variable
    if b <=.05:
        mean=x_ng.mean()
    else:
        sampled_means=[]
        for x in range(1,10000):
            g=np.random.choice(x_NG,size=len(x_NG),replace=True)
            print(g)
            g=np.mean(g)
            sampled_means.append(g)

我的代码运行平稳,直到最后一个块——当我想取采样平均值的平均值并将值附加到具有主题 id 的列表中(以及在我计算这些值之后的引导值的其他方法时——我离开了这有点为了可读性)。每次我在 sampled_means 上使用 np.mean 函数时,我都会得到 0(这是有道理的,python 在迭代之前对其进行评估)。

在我通过 for 循环更新值并将统计信息传递给数组后,“冻结”数组的最佳方法是什么?谢谢!

【问题讨论】:

  • 我很难理解你的问题。您不能在sampled_means 外部和for 循环之后应用np.mean 吗?
  • 嘿!谢谢回复!我尝试过类似的方法,但是 - 我不需要创建一个 if 循环告诉 python 返回 sampled_means 的平均值还是等待 b 的值的平均值?这是处理大量样本的最佳方法吗?

标签: arrays python-3.x pandas numpy iteration


【解决方案1】:

这应该可行:

#create the list of subject ids
SUB_IDS=['values']
# this is a pandas data frame of all subjects' information.  Columns are: 
#Sub_ID, NG,C,ER
asbs=pd.DataFrame(['Values'])
for x in SUB_IDS:

    x_data=asbs[asbs['SUB_ID']==x]

    x_ng=x_data['NG']
    x_c=x_data['C']
    x_er=x_data['ER']

    a,b = sp.stats.kurtosistest(x_NG)
    c,d = sp.stats.kurtosistest(x_C)
    e,f = sp.stats.kurtosistest(x_ER)
    kurtosis_scores.append([x,a,b,c,d,e,f])
    # for somplicity we'll only focus on bootstrapping one feature variable
    if b <=.05:
        mean=x_ng.mean()
    else:
        sampled_means=[]
        for x in range(1,10000):
            g=np.random.choice(x_NG,size=len(x_NG),replace=True)
            print(g)
            g=np.mean(g)
            sampled_means.append(g)
        mean=sampled_means.mean()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多