这几乎可以肯定是numpy有时使用成对求和,有时不使用成对的结果。
让我们构建一个诊断数组:
eps = (np.nextafter(1.0, 2)-1.0) / 21+eps+eps+eps# 1.0(1+eps)+(eps+eps)# 1.0000000000000002X = np.full((32, 32), eps)X[0, 0] = 1X.sum(0)[0]# 1.0X.sum(1)[0]# 1.000000000000003X[:, 0].sum()# 1.000000000000003
这强烈表明一维数组和连续轴使用成对求和,而多维数组中的跨步轴则不使用。
请注意,要看到这种效果,数组必须足够大,否则numpy会退回到普通求和。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)