我有一个 4x4 数组,想知道是否有一种方法可以在任意位置从其中随机采样 2x2 正方形,从而允许正方形在到达边缘时环绕。
例如:
>> A = np.arange(16).reshape(4,-1)
>> start_point = A[0,3]
start_point = 3
正方形将是[[15, 12], [3,0]]
最佳答案
我已经概括了(有点......)我的答案,允许矩形输入数组 甚至是矩形随机样本
def rand_sample(arr, nr, nc):
"sample a nr x nc submatrix starting from a random element of arr, with wrap"
r, c = arr.shape
i, j = np.random.randint(r), np.random.randint(c)
r = np.arange(i, i+nr) % r
c = np.arange(j, j+nc) % c
return arr[r][:,c]
您可能想检查 arr
是否是一个二维数组
关于python - 对包裹的 2D 数组中的子数组进行高效 Numpy 采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235358/