我正在从多个d维立方体构建一个坐标数组。我想从一个空数组开始,并附加我在每个for循环中生成的坐标。但是,np.concatenate (和vstack)需要一个匹配维数的现有数组。我还希望保持维数,而不是获得平面数组。
这是我想要做的想法:
#sample from d-dimensional cube
def make_cubes(d, npoints, ncubes):
cubes = []
for i in range(ncubes):
c = np.random.rand(npoints, d) #sample from cube in d dimensions
c += np.random.uniform(-5,5) #random translation
cubes = np.concatenate((cubes, c))
return cubes为了让它真正起作用,我必须将多维数据集定义为
cubes = [[]]
for d in range(d):
cubes[0].append(np.nan)发布于 2021-03-01 09:47:54
正如hpaulj所述,您可以使用append而不是concatenate。最后,可以将阵列重塑为所需的形状。
#sample from d-dimensional cube
def make_cubes(d, npoints, ncubes):
cubes = []
for i in range(ncubes):
c = np.random.rand(npoints, d) #sample from cube in d dimensions
c += np.random.uniform(-5,5) #random translation
cubes.append(c)
cubes = np.reshape(cubes, (npoints*ncubes,d) )
return cubes例如
print( make_cubes(3,4,2) )给了我
[[-0.20605781 0.17759941 -0.54688093]
[ 0.15476342 -0.47873276 -0.66528647]
[ 0.05216092 -0.7118765 -0.2794354 ]
[-0.648958 -0.49131152 -0.24827643]
[ 3.80803203 3.41893782 3.66186498]
[ 4.37535951 3.79385615 3.52051711]
[ 3.98299149 4.17239746 4.09716118]
[ 3.89030706 4.26959177 4.38166707]]https://stackoverflow.com/questions/66415431
复制相似问题