如何使用python获取n维多维数据集中所有整型点的列表?

如何使用python获取n维多维数据集中所有整型点的列表?,python,Python,给定一个坐标从(-x,-x,-x,…)到(+y,+y+y,…),x,y>0的立方体,我如何用简短易读的代码得到所有整数的列表 到目前为止,我已经: 列表((x,y,z)表示范围内的x(-x,y)表示范围内的y(-x,y)表示范围内的z(-x,y)) #尺寸是否已硬编码 列表(itertools.product(*[np.arange(-x,y)]*dim)) #很难理解发生了什么 有更直观的解决方案吗?只需将“硬编码”版本封装在函数中,并将维度作为参数传递 def cube_points(x1

给定一个坐标从(-x,-x,-x,…)到(+y,+y+y,…),x,y>0的立方体,我如何用简短易读的代码得到所有整数的列表

到目前为止,我已经:

列表((x,y,z)表示范围内的x(-x,y)表示范围内的y(-x,y)表示范围内的z(-x,y))
#尺寸是否已硬编码
列表(itertools.product(*[np.arange(-x,y)]*dim))
#很难理解发生了什么
有更直观的解决方案吗?

只需将“硬编码”版本封装在函数中,并将维度作为参数传递

def cube_points(x1, x2, y1, y2, z1, z2): #This describes any rectangular prism
    return [(x,y,z) for x in range(x1, x2+1) for y in range(y1, y2+1) for z in range(z1, z2+1)]
其中,
x1
x2
是通过将立方体投影到x轴等形成的线的端点

编辑:对于n维多维数据集

from itertools import product
def ndcube(*args): #accepts a list of 2-tuples
    return list(product(*map(lambda x: range(x[0], x[1]+1), args)))

您的第二个解决方案似乎很好,但我会这样做:

list(itertools.product(range(-x, y), repeat=dim))

Sry,我指的是空间的尺寸。因此,如果将dim设置为2,第二个将为我提供二维点。@MrZ Oops,我完全错过了“n维”。没问题。@MrZ我为任何超矩形添加了解决方案。看看它,我认为你的第二个解决方案,通过Stefan Pochmans的修改,就像你将得到很好的推广一样好。虽然我可能会使用
*x
而不是
x[0],但是x[1]
。但是它又开始变得有点难以理解了。@MrZ我避免了这种情况,因为python范围对象是完全独占的
[x,y)
,这是我们不想要的。第一卷
ndcube((1,2),(1,2))
的立方体只会报告一个点,除非我们在
范围的右侧添加一个点