- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题与this post非常相似- 但不完全是
我在 .csv 文件中有一些数据。数据精确到第 4 位 (#.####)。
在 Excel 或 SAS 中计算平均值给出的结果精确到第 5 位 (#.#####) 但使用 numpy 给出:
import numpy as np
data = np.recfromcsv(path2file, delimiter=';', names=['measurements'], dtype=np.float64)
rawD = data['measurements']
print np.average(rawD)
给出这样的数字
#.#####999999999994
显然出了点问题..
使用
from math import fsum
print fsum(rawD.ravel())/rawD.size
给予
#.#####
np.average 中是否有我设置错误的东西_______?
奖金信息:
我只处理数组中的 200 个数据点
我想我应该更清楚地说明我的情况。
我的 csv 中有类似 4.2730
的数字(给出小数点后 4 位精度 - 尽管第 4 位始终为零 [不是主题的一部分,所以不要介意])
通过 numpy 计算平均值/平均值给了我这个
4.2516499999999994
它给出了
的打印>>>print "%.4f" % np.average(rawD)
4.2516
在 Excel 或 SAS 中进行同样的操作时,我得到了这个:
4.2517
我实际上认为这是真正的平均值,因为它发现它是 4.25165。这段代码也说明了这一点:
answer = 0
for number in rawD:
answer += int(number*1000)
print answer/2
425165
那么我该如何告诉 np.average() 计算这个值___?
我有点惊讶 numpy 对我做了这个......我认为我只需要担心我是否正在处理 16 位数字。没想到小数点后4位四舍五入会受这个影响..
我知道我可以用
fsum(rawD.ravel())/rawD.size
但是我还有其他的东西(比如std)我想用同样的精度计算
我想我可以做一个临时解决方案
>>>print "%.4f" % np.float64("%.5f" % np.mean(rawD))
4.2416
这并没有解决这个问题。然后我试了一下
>>>print "%.4f" % float("4.24165")
4.2416
啊哈!格式化程序中存在错误:Issue 5118
老实说,我不在乎 python 是否将 4.24165 存储为 4.241649999...它仍然是一个舍入错误 - 不管怎样。
如果破解者能想出如何显示数字
>>>print float("4.24165")
4.24165
那么格式化程序也应该在四舍五入时处理那个数字..
它仍然没有改变我有一个四舍五入问题的事实(现在有格式化程序和 numpy)
如果您需要一些数字来帮助我,那么我已经制作了这个修改后的 .csv 文件:
(我知道这个文件没有我之前解释的数字位数,并且平均值最后给出 ..9988 而不是 ..9994 - 它被修改了)
猜猜我的问题归结为如果我使用 =average()
如果我选择只显示 4 位数字,请正确舍入
我知道这对某些人来说可能看起来很奇怪。但我有理由想要重现 Excel 的行为。
如有任何帮助,我们将不胜感激。
最佳答案
要获得精确的十进制数,您需要使用十进制算术而不是二进制。 Python 提供了 decimal module为此。
如果您想继续使用 numpy 进行计算并简单地将结果四舍五入,您仍然可以使用 decimal
来做到这一点。分两步进行,先四舍五入到大量数字以消除累积误差,然后四舍五入到所需的精度。 quantize
方法用于四舍五入。
from decimal import Decimal,ROUND_HALF_UP
ten_places = Decimal('0.0000000001')
four_places = Decimal('0.0001')
mean = 4.2516499999999994
print Decimal(mean).quantize(ten_places).quantize(four_places, rounding=ROUND_HALF_UP)
4.2517
关于python - Numpy to weak 计算精确的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945295/
感觉我在这里遗漏了一些明显的东西,所以提前道歉。无论如何,这是我尝试转换的一些数据a: acct_num year_prem prem exc 001 20
我正在尝试将表中的模式与用户话语 匹配。 string userUtterance = "I want identification number for number of customers";
当尝试在 Precise 上链接 gccgo 时,出现此链接错误: matt@matt-1005P:~/src/gopath/src/meme$ gccgo cmd/meme/main.go -o m
假设我有以下数据和命令: clc;clear; t = [0:0.1:1]; t_new = [0:0.01:1]; y = [1,2,1,3,2,2,4,5,6,1,0]; p = interp1(
假设我有以下数据和命令: clc;clear; t = [0:0.1:1]; t_new = [0:0.01:1]; y = [1,2,1,3,2,2,4,5,6,1,0]; p = interp1(
我总是想给精确匹配比只匹配前缀的分数更高的分数(例如,“ball”在与“ball*”匹配时应该比“ballistic”得到更高的分数)。 我当前(详细)的方法是在创建 PrefixQuery 时始终执
有什么解决方法可以让我在 Android 中使用 long 或 double 来寻找音频文件中的位置吗?目前 seekTo 只接受 ints 参数。我想更精确(比如在十分之一秒内) int resID
我的 replacingOccurrences 函数有问题。我有一个这样的字符串: let x = "john, johnny, johnney" 我需要做的只是删除“john” 所以我有这段代码:
我正在使用 BeautifulSoup 进行网页抓取。我有这段代码来提取 a 标签的值,但它似乎不起作用。显示错误: AttributeError: 'int' object has no attri
我要在带有标记顶点和标记有向边的图上寻找一种不精确的图匹配算法。我的任务是检测两个图表的变化以将它们显示给开发人员(想想颠覆差异)。我已经实现了基于禁忌搜索 ( this ) 的优化算法,但我无法让该
我有两个网站: example.com 和 yyy.com 他们都有类似的网络应用程序,但在不同的服务器上。我想让 Apache 将所有路径请求重定向到 example.com 与 完全相同的方式yy
因此,我尝试合并两个公司信息数据库(从现在起表 A 和表 B),其中最常见(且可靠)的单一引用点是网站 URL。表 A 已更新,表 B 待更新。 我已经从表 A 中提取了 URL,并使用 PHP 清理
我正在 http://classicorthodoxbible.com/new.html 上制作效果主要描述中的 Angular 色,包裹在自己的跨度中,从他们通常的休息地点移动到随机位置,然后通过指
我目前正在使用我的 Raspberry Pi 及其内置 UART 输入编写 MIDI 合成器。 在某个时间点,为了启用 MIDI 输入的实时回放,我必须设置一种环形缓冲区以与 OpenAL 一起使用,
在 C 中,当设置了一个 float 时, int main(int argc, char *argv[]) { float temp = 98.6f; printf("%f\n",
实现 MP3 无间隙循环的最佳可能性是什么?目前我正在使用 AVAudioPlayer 并将 .numberOfLoops() 属性设置为 -1 但可以听到,轨道重新启动。情况并非如此,例如使用 Tr
我想创建不一定是“正确”矩阵的“类矩阵”对象。但是,确切地说,“类矩阵”是什么意思? 示例 1 > image(1:9) Error in image.default(1:9) : argument
给定一个像这样的 XML 文档: john &title; 我想解析上面的 XML 文档并生成其所有实体已解析的副本。因此,给定上述 XMl 文档,解析器应输出: john
需要说明的是,这种方法不是我要找的: 事实上,此方法会调整 ImageField 的大小。我想将 Image 对象的大小调整为特定且精确的无比例分辨率。有什么办法吗? --编辑-- 对我来说,Ima
我正在尝试使用 TF2.0 eager 模式执行精确的 GP 回归,基于来自 https://colab.research.google.com/github/tensorflow/probabili
我是一名优秀的程序员,十分优秀!