【问题标题】:Multidimension histogram in pythonpython中的多维直方图
【发布时间】:2011-08-02 08:32:47
【问题描述】:

我有一个多维直方图

   H=histogramdd((x,y,z),bins=(nbins,nbins,nbins),range=((0,1),(0,1),(0,1)))

我需要在数组中打印不为零的 H 值,并且我还需要知道发生这种情况的坐标/箱。

我不熟悉元组。你能帮帮我吗?

【问题讨论】:

  • 你用什么来创建直方图? histogramdd的定义是什么/在哪里?
  • 这是一个标准的 numpy 函数 (nullege.com/codes/search/numpy.histogramdd)。我所拥有的是一组点,其坐标为 x、y、z 并且其范围在 0 和 1 之间。我在 nbins 中潜水“立方体”并计算我在这些 bins 中有多少点。我只需要访问这些点。
  • 第一个参数应该是样本数据。直方图存储几个点;在您的示例代码行中,您描述了一点:(x, y, z)。你应该有类似((x1, y1, z1), (x2, y2, z2), ...) 的东西。结果是ndarray,所以我真的不明白你为什么要问元组。
  • 对不起。我忘了写我的 x、y 和 z 本身就是数组。 x=(x1,x2,x3...),y 和 z 相同。
  • 等等,等等,等等。您有一个包含所有点的 x 坐标的数组,然后是一个包含所有 y 坐标的数组,然后是一个包含所有 z 坐标的数组?你想匹配他们来得分吗?这是真正的问题吗?

标签: python numpy tuples histogram


【解决方案1】:

使用where查找H中nozeros的索引,并使用索引获取坐标:

import numpy as np
x = np.random.random(1000)
y = np.random.random(1000)
z = np.random.random(1000)
nbins = 10
H, [bx, by, bz]=np.histogramdd((x,y,z),bins=(nbins,nbins,nbins),range=((0,1),(0,1),(0,1)))

ix, iy, iz = np.where(H)

for t in zip(bx[ix], by[iy], bz[iz], H[ix,iy,iz]):
    print t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多