我正在尝试使用基于像素的图像的所有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:如果m和n是图像的维度,则DSM的numpy.indices(image.shape)更简单.)
如果需要浮点坐标,则更通用的“复杂步骤”形式以有效的方式给出它们
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 []可能更有效,在这种情况下会创建一个自动广播的行和列,以覆盖二维网格.他们只使用很少的内存这一事实也可以加快速度(减少内存访问).