pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

添加零時奇怪的 numpy.sum 行為

Weird numpy.sum behavior when adding zeros(添加零時奇怪的 numpy.sum 行為)
本文介紹了添加零時奇怪的 numpy.sum 行為的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我了解數學上等效的算術運算如何由于數值錯誤(例如,以不同順序求和浮點數)而導致不同的結果.

I understand how mathematically-equivalent arithmentic operations can result in different results due to numerical errors (e.g. summing floats in different orders).

然而,令我驚訝的是,將零添加到 sum 會改變結果.我認為這始終適用于浮點數,無論如何:x + 0. == x.

However, it surprises me that adding zeros to sum can change the result. I thought that this always holds for floats, no matter what: x + 0. == x.

這是一個例子.我希望所有的行都完全為零.誰能解釋一下為什么會這樣?

Here's an example. I expected all the lines to be exactly zero. Can anybody please explain why this happens?

M = 4  # number of random values
Z = 4  # number of additional zeros
for i in range(20):
    a = np.random.rand(M)
    b = np.zeros(M+Z)
    b[:M] = a
    print a.sum() - b.sum()

-4.4408920985e-16
0.0
0.0
0.0
4.4408920985e-16
0.0
-4.4408920985e-16
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
2.22044604925e-16
0.0
4.4408920985e-16
4.4408920985e-16
0.0

MZ 的較小值似乎不會發生這種情況.

It seems not to happen for smaller values of M and Z.

我還確定了 a.dtype==b.dtype.

這里還有一個例子,它也展示了 python 的內置 sum 的行為符合預期:

Here is one more example, which also demonstrates python's builtin sum behaves as expected:

a = np.array([0.1,      1.0/3,      1.0/7,      1.0/13, 1.0/23])
b = np.array([0.1, 0.0, 1.0/3, 0.0, 1.0/7, 0.0, 1.0/13, 1.0/23])
print a.sum() - b.sum()
=> -1.11022302463e-16
print sum(a) - sum(b)
=> 0.0

我正在使用 numpy V1.9.2.

I'm using numpy V1.9.2.

推薦答案

簡答:你看到了兩者的區別

a + b + c + d

(a + b) + (c + d)

因為浮點數不準確所以不一樣.

which because of floating point inaccuracies is not the same.

長答案: Numpy 將成對求和作為速度(它允許更容易矢量化)和舍入誤差的優化.

Long answer: Numpy implements pair-wise summation as an optimization of both speed (it allows for easier vectorization) and rounding error.

numpy sum-implementation 可以在 here(函數pairwise_sum_@TYPE@).它基本上做了以下事情:

The numpy sum-implementation can be found here (function pairwise_sum_@TYPE@). It essentially does the following:

  1. 如果數組的長度小于 8,則執行常規的 for 循環求和.這就是為什么如果 W < 沒有觀察到奇怪的結果.4 在您的情況下 - 在兩種情況下都將使用相同的 for 循環求和.
  2. 如果長度在 8 到 128 之間,則在 8 個 bin r[0]-r[7] 中累加總和,然后通過 ((r[0] + r[1]) + (r[2] + r[3])) + ((r[4] + r[5]) + (r[6] + r[7])).
  3. 否則,它將遞歸地對數組的兩半求和.
  1. If the length of the array is less than 8, a regular for-loop summation is performed. This is why the strange result is not observed if W < 4 in your case - the same for-loop summation will be used in both cases.
  2. If the length is between 8 and 128, it accumulates the sums in 8 bins r[0]-r[7] then sums them by ((r[0] + r[1]) + (r[2] + r[3])) + ((r[4] + r[5]) + (r[6] + r[7])).
  3. Otherwise, it recursively sums two halves of the array.

因此,在第一種情況下,您會得到 a.sum() = a[0] + a[1] + a[2] + a[3] 而在第二種情況下 b.sum() = (a[0] + a[1]) + (a[2] + a[3]) 這導致 a.sum() - b.sum() != 0.

Therefore, in the first case you get a.sum() = a[0] + a[1] + a[2] + a[3] and in the second case b.sum() = (a[0] + a[1]) + (a[2] + a[3]) which leads to a.sum() - b.sum() != 0.

這篇關于添加零時奇怪的 numpy.sum 行為的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區域周圍繪制一個矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個矩形邊界框中應用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據文本方向檢測圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測圖像中矩形的中心和角度)
主站蜘蛛池模板: 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 砂磨机_立式纳米砂磨机_实验室砂磨机-广州儒佳化工设备厂家 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 河南中专学校|职高|技校招生-河南中职中专网 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 福建自考_福建自学考试网 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 |