NumPy在2D阵列中切片正方形



我想创建一个由随机高度的正方形组成的高度场映射。给定NxN的数组,我希望每个大小为MxM的正方形,其中M<N、 将处于相同的随机高度,高度从均匀分布中采样。例如,如果我们有N=6和M=2,我们会有:

0.2,0.2,0.6,0.6,0.1,0.1,
0.2,0.2

现在,我已经想出了一种效率低下的方法,用2个嵌套的For循环来完成它。我相信NumPy切片一定有一种高效而优雅的方法。

这个使用repeat((方法的解决方案应该适用于N/M整数。

import numpy as np
N = 6
M = 2
values = np.random.random( [N//M, N//M] )
y = values.repeat( M, axis=0 ).repeat( M, axis=1 )
print(y)

最新更新