【发布时间】:2018-02-16 21:16:29
【问题描述】:
我会尽量具体说明我所说的话。首先给你看代码:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1977)
x, y = np.random.random((2, 1000))
xbins = np.linspace(0, 1, 10)
ybins = np.linspace(0, 1, 10)
counts, _, _ = np.histogram2d(x, y, bins=(xbins, ybins))
print counts
你将从这段代码中得到一个二维数组,现在如果我有另一个数组
z = np.random.random((2, 1000))
那么如何从这三个数组中得到一个分布的三维数组。我试过了:
zbins = np.linspace(0, 1, 10)
counts, _,_,_ = np.histogramdd(x, y, z, bins=(xbins, ybins, zbins))
但这没有用。 更重要的是,真正的数据文件太大了,无法使用循环语句,这将花费我几个小时来运行它,而且我也不容易检查。 感谢您考虑这个问题!
【问题讨论】:
-
我不清楚你想在这里实现什么。你能更详细地解释一下上下文吗? x、y、z在现实中的物理意义是什么?你想提取什么样的信息?
-
代码中的随机数组x,y,z只是举例,我要处理的数组x,y,z来自一个1.2M的数据文件,形式看起来像'xx = data_txt[i][0] yy = data_txt[i][1] zz = data_txt[i][2]' ,然后我得到 'x = xx[i], y = yy[i], z = zz[i]' 作为数组。
-
而函数'counts, , _ = np.histogram2d(x, y, bins=(xbins, ybins))'只能处理2d。 (这个函数输出一个二维数组,如果你不明白,make 'x, y = np.random.random((2, 10))',然后你会看到。)。所以,我认为必须有一个函数可以处理 x,y 和 z,就像 'counts, _,,' 所做的那样。但我没找到。
-
也许我可以这样说,我有100000个点在三维坐标系中的位置坐标。现在,如果我在三维坐标系中将它们分成1000个网格,我想知道每个网格中有多少个点,这应该是一个3d数组。