numpy - 创建元素在范围内的二维 numpy 数组的最快方法

标签 numpy range

我想创建一个 2D numpy 数组,我想在其中存储像素的坐标,使 numpy 数组看起来像这样

[(0, 0), (0, 1), (0, 2), ...., (0, 510), (0, 511)
 (1, 0), (1, 1), (1, 2), ...., (1, 510), (1, 511)
 ..
 ..
 ..
 (511, 0), (511, 1), (511, 2), ...., (511, 510), (511, 511)]

这是一个荒谬的问题,但我还没有找到任何东西。

最佳答案

可以用 np.indices np.meshgrid 更高级的索引:

>>> data=np.indices((512,512)).swapaxes(0,2).swapaxes(0,1)
>>> data.shape
(512, 512, 2)

>>> data[5,0]
array([5, 0])
>>> data[5,25]
array([ 5, 25])

这可能看起来很奇怪,因为它确实是为了做这样的事情:
>>> a=np.ones((3,3))
>>> ind=np.indices((2,1))
>>> a[ind[0],ind[1]]=0
>>> a
array([[ 0.,  1.,  1.],
       [ 0.,  1.,  1.],
       [ 1.,  1.,  1.]])

一个 mgrid例子:
np.mgrid[0:512,0:512].swapaxes(0,2).swapaxes(0,1)

网格示例:
>>> a=np.arange(0,512)
>>> x,y=np.meshgrid(a,a)
>>> ind=np.dstack((y,x))
>>> ind.shape
(512, 512, 2)

>>> ind[5,0]
array([5, 0])

所有这些都是等效的方法;然而,meshgrid可用于创建非均匀网格。

如果您不介意切换行/列索引,您可以删除最后的 swapaxes(0,1) .

关于numpy - 创建元素在范围内的二维 numpy 数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359671/

相关文章:

excel - 无法设置两个工作表VBA的范围

包含 NA 的字段上的范围

numpy - 使用矢量化将函数应用于 Numpy 二维数组中的每一行

Python、Numpy : How to select numpy array with given mask

python - 使用来自不同数据集的 for 循环进行绘图

python - 在 numpy 中按值拆分数组

python - 非连续拥有 numpy 数组 : do they exist & when to expect them

excel - 从另一个范围中的值定义一个范围

bash - 如何在 Bash 脚本中 grep 程序输出的一系列数据值

string - 如何比较 Range<String.Index> 的 .startIndex