在python中生成二维数组上的随机行



我得到了一个2d的0数组:250 × 250。我想生成一条随机的直线它有特定的长度(还没决定)显然,由于它是一条直线,从0到1的值必须以某种方式连接起来,垂直,水平或对角线;而且它必须是直的。我怎么能这么做?这个问题把我难住了,希望你能帮助我。

我们可以:

import numpy as np
SIZE = 250
arr = np.zeros((SIZE, SIZE))
M_POS = np.arange(-SIZE, SIZE)
M_POS = np.r_[M_POS,  1 / M_POS[M_POS!=0]]
M = np.random.choice(M_POS, 1)[0]
N = np.random.choice(np.arange(-SIZE, SIZE), 1)[0]
L = 50
P0 = np.array([0, N])
X_Y  = np.array([1, 1 / M]) if abs(M) < 1 else np.array([1, M])
draw_in = np.add(np.repeat([P0], L, axis=0), 
np.repeat([X_Y], L, axis=0) * np.arange(L)[:, np.newaxis]).astype(int)
draw_in = draw_in[((draw_in < SIZE) & (draw_in>0)).all(axis=1)]
arr[draw_in[:, 0], draw_in[:, 1]] = 1

相关内容

  • 没有找到相关文章

最新更新