numpy 计算平均值和第一个标准差之间的平均值

lnvxswe2  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(134)

我有一个数组:

import numpy as np

# Create an array of values
values = np.array([41,17,44,36,14,29,33,38,49,39,22,15,46])

# Calculate the mean
mean = np.mean(values)

# Calculate the standard deviation
standard_deviation = np.std(values)

如何计算平均值和第一个标准差之间的平均值?我有:

# Calculate the average of values between the mean and the first standard deviation
mean_between_mean_and_first_standard_deviation = np.mean(values[(values >= mean) & (values <= standard_deviation)])
print("Average between mean and first standard deviation:", mean_between_mean_and_first_standard_deviation)

我得到:

Average between mean and first standard deviation: nan

2guxujil

2guxujil1#

下面的图表应该会更清楚。您需要选择介于meanmean之间的值加上standard_deviation的一倍。

np.mean(values[(values >= mean) & (values < (mean + 1 * standard_deviation))])

或者如果你想要中间点,你可以这样做:

np.mean([mean, mean + 1 * standard_deviation])

wqsoz72f

wqsoz72f2#

例如,您可以这样做:

np.mean(values[np.logical_and(values >= mean, values <= mean+standard_deviation)])

values >= mean的计算结果是一个与values形状相同的布尔数组,因此它在满足条件的任何地方都有True,否则有False。同样,对于values <= mean+standard_deviation
剩下的就是使用np.logical_and()来找到满足这两个条件的地方。然后使用此布尔数组计算values的平均值,仅在值满足两个条件的索引处

相关问题