>>> array= [float(sum(col))/sum(map(bool,col)) for col in zip(*matrix)]
>>> array
[3.6666666666666665, 1.5, 1.3333333333333333, 1.0]
编辑:
一种更稳健的方法,处理所有为零的列:
>>> matrix=[[0,0,1,0],[1,2,0,0],[9,0,1,0],[1,1,2,0]]
>>> array= [float(sum(col))/sum(map(bool,col)) if sum(map(bool,col))>0 else 0 for col in zip(*matrix)]
>>> array
[3.6666666666666665, 1.5, 1.3333333333333333, 0]
import numy as np
matrix=np.array([[0,0,1,1],[1,2,0,1],[9,0,1,0],[1,1,2,0]])
array=[np.mean(col[col!=0]) for col in matrix.T]
#array is: [3.6666666666666665, 1.5, 1.3333333333333333, 1.0]
直接替代你的方法是,应该是其他方法中最快的(对于这种规模的问题):
编辑:
一种更稳健的方法,处理所有为零的列:
使用numpy:
以下是
pd.DataFrame().mask
的方法:输出:
相关问题 更多 >
编程相关推荐