我试图用基于像素的图像的所有 x 坐标的列表填充一个 numpy 数组。所以基本上,n x m
图像会有 n
1
、 n
2
等等,直到 n
m
。有没有一种简单的方法来填充一个 numpy 数组,以便是这种情况?
到目前为止,我已经考虑过使用 numpy.concatenate
,但是不得不单独提出每个数组似乎非常乏味,无论如何我都会使用循环,这并没有真正的帮助。 numpy.flatten
也找到了,但我必须先生成网格。有什么简单的解决办法吗?
最佳答案
总是有 通常的网格创建 函数 mgrid()
:
x_coords = numpy.mgrid[:m, :n][0]+1 # [[1, 1, 1…], [2, 2, 2,…]]. Element 1 is instead: [[1, 2, 3,…], [1, 2, 3,…]]
(PS:如果
numpy.indices(image.shape)
和 m
是 n
的维度,则 DSM 的 image
更简单。)如果需要 浮点坐标 ,则更通用的“复杂步骤”形式以有效的方式提供它们
numpy.mgrid[:m:(m+1)*1j, :n:(n+1)*1j] # m+1 values from 0 to m, n+1 values from 0 to n
(另一种选择是将 float
1.
添加到第一种形式,但这将不必要地首先创建一个整数数组)。如果您只需要一个坐标,这有点浪费,因为
mgrid[]
还为另一个坐标创建了一个类似的网格( mgrid[]
在这里有两个元素)。在某些情况下,使用 低内存占用
numpy.ogrid[]
可能更有效,在这种情况下,它会创建自动广播的行和列以覆盖二维网格。他们只使用很少的内存这一事实也可以加快速度(更少的内存访问)。关于python - numpy.arange 返回的数组的多个副本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16755667/