gpt4 book ai didi

python - Numpy:如何创建类似网格的数组?

转载 作者:太空狗 更新时间:2023-10-30 00:54:59 27 4
gpt4 key购买 nike

我想创建一个代表 X-Y 面板 (-50, 50) 的数组。那是:[[-50, -50], [-49,-50],[-48,-50]...[50,50]],长度为 101*101。

显然,我可以通过 从 (-50,50) 开始的双循环 生成。我想知道执行此操作的首选方式?

最佳答案

numpy.meshgrid 显然对我来说是最清晰的方法(正如@benbo 提到的),你需要多一步来ravelflatten 二维网格阵列:

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]:

或者如@John 所述,使用 np.c_ 缩短代码以跳过转置:

coords=np.c_[xx.ravel(), yy.ravel()]

基准测试:

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

关于python - Numpy:如何创建类似网格的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com