Joh*_*Doe 0 python numpy multidimensional-array
我有一个N维的点数组,代表一个函数的采样。然后,我使用numpy histogramdd创建多维直方图:
histoComp,edges = np.histogramdd(pointsFunction,bins = [np.unique(pointsFunction[:,i]) for i in range(dim)])
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试使用每个仓位的不同点的坐标生成一个“网格”。为此,我正在使用:
Grid = np.vstack(np.meshgrid([edges[i] for i in range(len(edges))])).reshape(len(edges),-1).T
Run Code Online (Sandbox Code Playgroud)
但是,这不符合我的预期,因为np.meshgrid的输入是数组列表而不是数组...但是鉴于边缘数未知,我必须使用生成器。
有小费吗 ?
---更新---这是我不工作的意思的一个例子
>>>a = [4, 8, 7, 5, 9]
>>>b = [7, 8, 9, 4, 5]
Run Code Online (Sandbox Code Playgroud)
所以这是我想要的结果:
>>>np.vstack(np.meshgrid(a,b)).reshape(2,-1).T
array([[4, 7],
[8, 7],
[7, 7],
[5, 7],
[9, 7],
[4, 8],
[8, 8],
[7, 8],
[5, 8],
[9, 8],
[4, 9],
[8, 9],
[7, 9],
[5, 9],
[9, 9],
[4, 4],
[8, 4],
[7, 4],
[5, 4],
[9, 4],
[4, 5],
[8, 5],
[7, 5],
[5, 5],
[9, 5]])
Run Code Online (Sandbox Code Playgroud)
但这是我得到的结果:
>>> np.vstack(np.meshgrid([a,b])).reshape(2,-1).T
array([[4, 7],
[8, 8],
[7, 9],
[5, 4],
[9, 5]])
Run Code Online (Sandbox Code Playgroud)
谢谢,
np.meshgrid(*[A, B, C])
Run Code Online (Sandbox Code Playgroud)
相当于
np.meshgrid(A, B, C)
Run Code Online (Sandbox Code Playgroud)
既然edges是列表,请np.meshgrid(*edges)解压缩其中的项目edges并将其作为参数传递给np.meshgrid。
例如,
import numpy as np
x = np.array([0, 0, 1])
y = np.array([0, 0, 1])
z = np.array([0, 0, 3])
xedges = np.linspace(0, 4, 3)
yedges = np.linspace(0, 4, 3)
zedges = np.linspace(0, 4, 3)
xyz = np.vstack((x, y, z)).T
hist, edges = np.histogramdd(xyz, (xedges, yedges, zedges))
grid = np.vstack(np.meshgrid(*edges)).reshape(len(edges), -1).T
Run Code Online (Sandbox Code Playgroud)
产量
In [153]: grid
Out[153]:
array([[ 0., 0., 0.],
[ 0., 0., 2.],
[ 0., 0., 4.],
...
[ 2., 4., 4.],
[ 4., 4., 0.],
[ 4., 4., 2.],
[ 4., 4., 4.]])
Run Code Online (Sandbox Code Playgroud)