【问题标题】:Integer data in -> averaged -> float data out in python for large files整数数据输入->平均->在python中为大文件浮动数据
【发布时间】:2016-06-16 03:20:00
【问题描述】:

我在长度为 2048 的列中以 0-255 的整数表示来自传感器的大量数据,并且在同一个 2D numpy 数组中至少有 10000 行。我希望将所有行平均在一起以获得一列浮点数并绘制它们。很简单吧?

当行数少于 1000 时,我的图表看起来很漂亮,而且根本没有量化。平均是显而易见的。 当有超过 10000 行时,我的图表看起来更糟 - 比较小数组的平均值看起来更量化,即使它都是由浮点数组成的,它非常接近整数,很痛苦。

我要问的是:为什么会这样?平均应该“平滑”传感器测量。当我采集更长的数据样本时,它们现在更加嘈杂(和量化)!

这是我当前代码的示例:

import matplotlib.pyplot as plt
import numpy as np

lower_bound=0
upper_bound=2048

#this loads data into raw_array as [n rows][2048 columns]
raw_array=np.loadtxt('raw_data.txt',dtype=int)

avg_array=np.mean(raw_array,0) #averages over zeroth column
x_inc=np.arange(lower_bound,upper_bound)
plt.plot(x_inc[lower_bound,upper_bound],avg_array[lower_bound,upper_bound])
plt.show()

【问题讨论】:

  • 你能给我们看一些例子吗?
  • 我认为你的情节陈述中的avg应该是avg_array(可能在复制时发生)。为什么你需要[lower_bound,upper_bound] 的切片呢?我以为数组保证有 2048 列?
  • 三件事,np.mean(raw_array, 0) 平均在第 0 轴,而不是第 0 列。其次,如果你读入的时候为什么不把数据赋值给dtype=numpy.float32,而不是int,最后,np.arange在很多情况下是不可靠的,你应该改用np.linspace
  • @Benjamin,1. 我没有意识到情况是这样,至于第 0 轴与第 0 列。谢谢你。 2. 我试过了,它没有改变任何东西。 3. arange 怎么可能不可靠?我不知道。我会尝试 linspace 并回复您。
  • @StefanS,正确的。它确实发生在复制过程中。我需要切片的原因是能够放大数据的特定时间范围。

标签: python arrays numpy matplotlib


【解决方案1】:

问题是我平均的数据有错误(由数据采集程序引起)。基本上,从传感器收集的数据帧中,有一半以上是相同且重复的。这导致输出近似于单帧数据,而不是平滑我认为拥有的大量数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 2023-03-12
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多