【发布时间】:2019-03-06 12:25:13
【问题描述】:
我必须找到从 hdf5 文件中读取的 NumPy 数组的模式。 NumPy 数组是 1d 并且包含浮点值。
my_array=f1[ds_name].value
mod_value=scipy.stats.mode(my_array)
我的数组是 1d 并且包含大约 1M 的值。我的脚本需要大约 15 分钟才能返回模式值。有什么办法可以加快速度吗?
另一个问题是为什么scipy.stats.median(my_array) 在模式有效时不起作用?
AttributeError: 模块 'scipy.stats' 没有属性 'median'
【问题讨论】:
-
听起来是 IO 绑定的,因为我认为剩余的代码是最佳的。所以检查你的hdf;缓冲区,压缩和合作。另外: scipy.stats 没有称为中值的函数,可以通过阅读文档轻松检查。您可以只使用 numpy 的中位数。
-
@sascha 文件在 0.02 秒内被读取。在这行代码“scipy.stats.median(my_array)”中计算模式花费了 15 分钟。
-
也许您应该显示更多代码,因为您的时间与给定答案中显示的这些合成示例有很大不同(这也表明我错了;实现的加速并不那么难)。
-
@sascha 请检查添加的回复以获取完整代码。如果您需要我的输入文件进行测试,请告诉我,谢谢。