2017-08-29 93 views
0

我已经从使用numpy的csv文件中获得的数据。 numpy数组的尺寸为:100 * 20。我如何采取列的平均水平(比如说山坳3,5,8),并与这些3周的cols的一个新的包含平均列以列的平均在numpy的阵列

如果

col3 = 1,2,3,4 
    col5 = 2,3,4,8 
    col8 = 3,4,5,6 

然后我想删除这些3列,并取代它们插入新列,其中每个条目包含这些3列

我要插入一个新列的平均值:2,3,4,6,删除以前的3个COLS和最后阵列的维数为100 * 28

是否有任何numpy的功能做到这一点?

+0

事情还不清楚 - 1)我们是如何以'28'列结束的? 2)删除前3个cols中的“previous”是什么意思? 3)插入新列在哪里? – Divakar

+0

我有30周的cols早些时候,我采取col3,5,8的平均并将其存储和删除这些3,所以现在的cols是27.现在地方插入取平均值山坳。所以总cols = 28 – mcjoshi

+0

你应该提供[mcve] –

回答

1
a = np.arange(100*30).reshape(100,30) # change this to your own data 
cols = [2, 4, 7] # columns to calculate averages, i.e. 3, 5, 8 
b = a[:, cols] # data of the cols 
c = b.mean(axis=1) # average 
a_no_b = np.delete(a, cols) # data without the cols 
a_final = np.c_[a_no_b, c] # final result