[英]slice a numpy structured 1-d array to get part of a record
我有一個n-out 1-D結構化數組,我想得到一個記錄的一部分。 我試圖弄清楚如何切片這種類型的請求。 這是我的代碼:
summary_stat_list = ['mean', 'variance', 'median', 'kurtosis', 'skewness']
model_summary_stats = np.zeros(5,dtype=[('statistic',
'object'),
('f1', 'float'),
('f2', 'float'),
('f3', 'float'),
('m1', 'float'),
('m2', 'float'),
('m3', 'float'),
('t3', 'float'),
('t2', 'float'),
('t1', 'float'),
('prom1', 'float'),
('prom2', 'float')])
for r in range(model_summary_stats.shape[0]):
model_summary_stats['statistic'][r] = summary_stat_list[r]
現在,數組看起來像這樣:
[('mean', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
('variance', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
('median', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
('kurtosis', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
('skewness', 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)]
我的問題是,除了第一個數組的第一個元素外,我怎樣才能獲得所有元素。 也就是說,在'mean'數組中,我想獲得數字條目。
我正在嘗試類似的東西
model_summary_stats[0]['f1':]
要么:
model_summary_stats[0][1:]
但這些都不起作用。 有什么建議。
切片不適用於字段名稱索引。 您必須使用所需字段名稱的列表:
model_summary_stats[0][['f1','f2','f3',etc]
你也可以通過類似的方式獲得該列表
model_summary_stats.dtype.names[1:]
您應該記住,這種多字段索引編寫得很糟糕。 可以檢索值,但不能以這種方式設置值。 你不能跨列進行數學運算。
http://docs.scipy.org/doc/numpy/user/basics.rec.html#accessing-multiple-fields-at-once
不同的dtype可能更有用
dt = np.dtype([('statistic',object),('values',(float,11))])
dt = np.dtype([('statistic',object),('values',(float,8)),('prom',(float,3))])
或者在處理數據時哪些分組最有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.