【发布时间】:2019-11-20 13:37:16
【问题描述】:
有没有办法在某些条件下沿轴求和? 所以我有一个这样的数组,可以沿 0 轴求和。
#array creation:
tpfnfpArray = np.zeros((1000,3))
for i in range(1000):
tpfnfpArray[i,:] = (i,i,i)
#first result
tp,fn, fp = np.sum(tpfnfpArray,axis=0)
#preparing second result
tp2,fp2,fn2,tn2 = (0,0,0,0)
到目前为止一切顺利。现在我想在这样的条件下得到另一个结果(tp2,fp2,fn2,tn2):
for i in range(1000):
if tpfnfpArray[i][0] > 0 or tpfnfpArray[i][1]>0:
if tpfnfpArray[i][2] > 0: # 0,1,1 or 1,0,1
tp2+=1
else: # 0,1,0 or 1,0,0
fp2+=1
else:
if tpfnfpArray[i][2] > 0: # 0,0,1
fn2+=1
else: # 0,0,0
tn2+=1
是否可以不循环遍历第一个数组的每一行?
【问题讨论】:
-
无关,但我想
tp,fp,fn的顺序实际上应该是tp,fn,fp,从数组名称tpfnfpArray来看? -
你完全正确,是个错误!
-
在 pandas 中,您可以像我的示例 colab.research.google.com/drive/… 那样以矢量化方式对行应用 lambda 函数。当然可以在 numpy 中完成(pandas 是基于 numpy 构建的)
标签: python numpy vectorization