我想创建一个表示XY面板的数组(-50、50)。即:
[[-50, -50], [-49,-50],[-48,-50]....[50,50]],长度为101 * 101。
显然,我可以通过生成double loop from (-50,50)。我想知道prefered这样做的方式吗?
numpy.meshgrid显然是我最清楚的方式(如@benbo提到),你还需要一个步骤ravel或flatten二维栅格阵列:
In [131]: import numpy as np
...: x=np.linspace(-2, 2, 5)
...: y=np.linspace(-2, 2, 5)
...: xx,yy=np.meshgrid(x,y)
...: coords=np.array((xx.ravel(), yy.ravel())).T
In [132]: coords
Out[132]:
array([[-2., -2.],
[-1., -2.],
[ 0., -2.],
[ 1., -2.],
[ 2., -2.],
[-2., -1.],
......
[ 1., 2.],
[ 2., 2.]])
In [133]:
Run Code Online (Sandbox Code Playgroud)
或者正如@John 提到的,缩短您的代码np.c_以跳过转置:
coords=np.c_[xx.ravel(), yy.ravel()]
Run Code Online (Sandbox Code Playgroud)
基准:
In [156]: %timeit coords=np.array((xx.ravel(), yy.ravel())).T
100000 loops, best of 3: 14.6 µs per loop
In [157]: %timeit coords=np.c_[xx.ravel(), yy.ravel()] #not as efficient as ?
10000 loops, best of 3: 47.6 µs per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |