Python中的双和运算

2024-05-15 02:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图编写一个代码来进行二次求和(见图)

enter image description here

其中:; M是受试者, N是审判, Yijt是测量的波形数据(3d阵列)

到目前为止我有; 给定Y是按Y排列的数据[受试者、试验、时间]

# ranges:
I = len(Y)
J = len(Y[0])

Y_i_vals = 0

for i in range(M):
    for j in range(N):
        Y_i_vals = Y_i_vals +Y[i][j]
Yt = (1.0/(M*N)) * Y_i_vals

这样做似乎不是最有效的方法,我也不确定它是否给出正确的结果。在


Tags: 数据方法代码inforlen时间range
3条回答

当涉及到简单的双和运算时,比如在您的例子中,最好使用numpy的einsum:

np.einsum('tij -> t', Y) / (M*N)

要为您的问题添加更一般的答案:

在python列表理解的帮助下,可以编写一个双和运算。在

Yt = (1.0/(M*N)) * sum([Y[i][j] for i in range(M) for j in range(N)])

如果你正在使用numpy,那么就这么做

np.mean(Y)

另外,最好在问题中添加示例输入和预期输出数据。在

如果你想要每个t的方法,你可以做np.mean(np.mean(a, axis=0), axis=0) ,或者如@ophion所说,你可以在新版本(1.71及更高版本)中将其缩短为np.mean(a, axis=(0, 1))。在

相关问题 更多 >

    热门问题