[f_oneway,当数据以列表形式出现时

问题描述 投票:1回答:2

如果这是源代码。您将如何编辑f_oneway函数行,这样您就不必每次都手动指定弓箭手名称了

import numpy as np
from scipy import stats

data = np.rec.array([
('Pat', 5),
('Pat', 4),
('Pat', 4),
('Pat', 3),
('Pat', 9),
('Pat', 4),
('Jack', 4),
('Jack', 8),
('Jack', 7),
('Jack', 5),
('Jack', 1),
('Jack', 5),
('Alex', 9),
('Alex', 8),
('Alex', 8),
('Alex', 10),
('Alex', 5),
('Alex', 10)], dtype = [('Archer','|U5'),('Score', '<i8')])

f, p = stats.f_oneway(data[data['Archer'] == 'Pat'].Score,
                      data[data['Archer'] == 'Jack'].Score,
                      data[data['Archer'] == 'Alex'].Score)

print ('P value:', p, '\n')

我尝试了以下操作,但出错了,说'没有名叫Pat的字段'

f, p = stats.f_oneway(data[data['Archer']].Score)

帮助!

python arrays scipy statistics anova
2个回答
1
投票

我认为就是这样。显然f_oneway无法应付array([5, 4, 4, 3, 9, 4], dtype=int64)类型的事物;它可以处理列表。

import numpy as np
from scipy import stats

data = np.rec.array([ ('Pat', 5), ('Pat', 4), ('Pat', 4),('Pat', 3), ('Pat', 9), ('Pat', 4),('Jack', 4), ('Jack', 8), ('Jack', 7),('Jack', 5), ('Jack', 1), ('Jack', 5), ('Alex', 9),('Alex', 8), ('Alex', 8), ('Alex', 10), ('Alex', 5), ('Alex', 10)], dtype = [('Archer','|U5'), ('Score', '<i8')])
f, p = stats.f_oneway(*[list(data[data['Archer']==name].Score) for name in ['Pat', 'Jack', 'Alex']])
f, p = stats.f_oneway(*[list(data[data['Archer']==name].Score) for name in set(data['Archer'])])
print ('P value:', p, '\n')

0
投票

星号在此表达式中是什么意思? f,p = stats.f_oneway(* [list(data [data [data ['Archer'] == name] .Score)。[Pat','Jack','Alex']]]]

© www.soinside.com 2019 - 2024. All rights reserved.