我正在尝试在数组的特定行或列中找到一部分,并创建这些分数的新数组。
到目前为止,我有:def calc_frac(a,axis=0):
"""a function that returns the fraction of ones in each column or row"""
s=np.array(((a==1).sum())/len(a))
return(s)
并且当我们的测试值应该为真时,我的所有测试值都会返回false
答案 0 :(得分:0)
如果数组中没有缺失值,则只需在mean
逻辑数组上调用a == 1
方法,该方法返回1的小数:
a = np.array([[1,2,3,1], [1,1,1,1], [1,0,2,2], [2,2,1,1]])
a
#array([[1, 2, 3, 1],
# [1, 1, 1, 1],
# [1, 0, 2, 2],
# [2, 2, 1, 1]])
1)每列1s的分数
(a == 1).mean(0)
# array([ 0.75, 0.25, 0.5 , 0.75])
2)每行1分的分数
(a == 1).mean(1)
# array([ 0.5 , 1. , 0.25, 0.5 ])
如果nan
计为条目,则上述方法仍然有效;如果nan
不计入条目,您可以按照以下方式处理nan
:
(a == 1).sum(axis)/(~np.isnan(a)).sum(axis)
其中 axis = 0 ,每列分数; 轴= 1 ,每行分数。