您如何在 Python 中高效地执行数百万次 t 检验?
How do you efficiently perform millions of t-tests in Python?
长话短说,我需要进行数亿次 t 检验。我有两个样本列表,ys
和 ns
,我想比较每个列表中的一个样本,因此 ys
中的第一个样本将与 [= 中的第一个样本进行比较13=] 等等。结果将是一个 p 值列表,每个比较都有一个。最快的方法是什么?目前,我正在使用 map
函数
p_values = [result[1] for result in list(map(ttest_ind, ys, ns))]
但还是很慢。 numpy.vectorize
看起来它可能更快,但我不知道如何将它与将两个列表作为输入的函数一起使用。如果我硬编码 t 检验数学而不是使用 scipy.stats.ttest_ind
会更快吗?
整个思路是:不是 运行 这个在 Python,而是在 C/C++。
你有两个选择:
- 自己写在C/C++里,用Python连起来。
- 尝试使用 C/C++ 支持的库,例如 Numpy。将数据打包为 Numpy 类型并使用 Numpy 函数对其进行操作。后端是C/C++中的运行,和1一样,会简单很多。
长话短说,我需要进行数亿次 t 检验。我有两个样本列表,ys
和 ns
,我想比较每个列表中的一个样本,因此 ys
中的第一个样本将与 [= 中的第一个样本进行比较13=] 等等。结果将是一个 p 值列表,每个比较都有一个。最快的方法是什么?目前,我正在使用 map
函数
p_values = [result[1] for result in list(map(ttest_ind, ys, ns))]
但还是很慢。 numpy.vectorize
看起来它可能更快,但我不知道如何将它与将两个列表作为输入的函数一起使用。如果我硬编码 t 检验数学而不是使用 scipy.stats.ttest_ind
会更快吗?
整个思路是:不是 运行 这个在 Python,而是在 C/C++。
你有两个选择:
- 自己写在C/C++里,用Python连起来。
- 尝试使用 C/C++ 支持的库,例如 Numpy。将数据打包为 Numpy 类型并使用 Numpy 函数对其进行操作。后端是C/C++中的运行,和1一样,会简单很多。