我试图用基于像素的图像的所有 x 坐标的列表填充一个 numpy 数组。所以基本上,n x m 图像会有 n 1n 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)mn 的维度,则 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/

10-11 10:23
查看更多