【发布时间】:2017-10-28 16:05:06
【问题描述】:
我正在尝试为需要和理解距离的算法创建坐标网格。我知道如何针对已知数量的维度执行此操作 - 就像 2D 一样:
x = [0,1,2]
y = [10,11,12]
z = np.zeros((3,3,2))
for i,X in enumerate(x):
for j,Y in enumerate(y):
z[i][j][0] = X
z[i][j][1] = Y
print(z)
--------------------------
array([[[ 0., 10.],
[ 0., 11.],
[ 0., 12.]],
[[ 1., 10.],
[ 1., 11.],
[ 1., 12.]],
[[ 2., 10.],
[ 2., 11.],
[ 2., 12.]]])
这很好用。我最终得到 (3,3,2) 的形状,其中 2 是该点的坐标值。我试图用它来创建一个概率表面,所以我需要能够让每个点成为它自己的“位置”值。有没有办法轻松地将其扩展到 N 维?在那里我会有未知数量的 for 循环。由于项目限制,我可以访问 Python 内置程序和 numpy,但这或多或少是这样。
我已经尝试过 np.meshgrid() 但它导致输出形状为 (2,3,3) 并且我尝试重塑它从来没有以正确的顺序给我坐标。关于我如何干净地做到这一点的任何想法?
【问题讨论】:
-
N是指数组的数量吗?例如,在示例情况下,您有两个数组,所以它是二维的? -
也许这就是你要找的东西:xarray
-
@Divakar By N - 我的意思是用户将放入一些数据矩阵,但是有多少列将是 N。所以如果他们有 8 列数据,我需要一个 8-维度网格。
-
嘿@sharatpc。我会调查一下。谢谢!
-
如果我做对了 - 例如
x,y中的 8 列数据,假设它们保持 1D,代码保持不变,对吗?那么,有什么问题呢?