【问题标题】:Element-wise median of a lot of matrices, python pandas许多矩阵的元素中位数,python pandas
【发布时间】:2014-10-20 15:33:56
【问题描述】:

我有一本矩阵字典。

字典叫做dict。

dict[location] 

返回该位置的正方形 n x n 相关数据帧。

locations

是所有位置的列表。 (字典中的键)。

我想基本上列出数据框中跨键的每个 i,j 组件,并取所有这些组件的中值。您可以将其视为将矩阵堆叠在一起并获取每个 i,j 元素的中值。我希望我解释得足够清楚。

我想知道是否有一种聪明的方法可以做到这一点。我想避免列出 n(n+1)/2 个唯一的 i,jth 对然后取中位数,然后将它们放回最终中位数矩阵(数据帧)中的适当位置。

【问题讨论】:

  • 您可以在通过堆叠所有矩阵制成的单个 (3D) 数组上使用 numpy.median。

标签: python dictionary matrix pandas median


【解决方案1】:

这似乎运作良好且有效。

numpy.median(dict.values(),axis=0)

一般来说,中位数需要内存中的所有数据,除非您只需要一个估计值。因此,对于大量数据,您必须分块工作:

numpy.median( [m[0:10,0:10], for m in dict.values()], axis=0)

【讨论】:

  • 嗯,我有 117 个键,每个矩阵是 76 x 76。Dict.values() 有效,但是当我使用 numpy.median 时,计算机崩溃了。
  • 终于加载完成了:这是错误:ValueError:DataFrame的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
  • 我以为你有字典,而不是数据框。
  • 这就是错误,它实际上吐出了 1000 行错误。矩阵有一些 NAN,是这样吗?
  • 啊,是的,当某些值为 NaN 时,你不能有中位数;除非你当然想要所有非 NaN 值的中位数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多