如何创建数组
0 0 ... 0
1 1 ... 1
...
N N ... N
和
0 1 ... M
0 1 ... M
...
0 1 ... M
我能做的最好的事情是:
a = np.tile(np.arange(N+1),(M+1,1)).T
b = np.tile(np.arange(M+1),(N+1,1))
有更好的解决方案吗?
答案 0 :(得分:3)
您可以使用np.mgrid
(或np.meshgrid
)。
>>> np.mgrid[0:5,0:5]
array([[[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3],
[4, 4, 4, 4, 4]],
[[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]])
如果需要,可以使用a, b = np.mgrid[0:5, 0:5]
创建带有第一个矩阵的变量a
,使用第二个矩阵创建b
。
请查看this question以获取更多相关信息。