【发布时间】:2018-08-06 23:39:01
【问题描述】:
我想在 2D numpy 数组中定位所有非零值并移动它们以使图像居中。我不想填充数组,因为我需要保持它相同的形状。例如:
my_array = np.array([[1, 1, 0, 0], [0, 0, 2, 4], [0, 0, 0, 0], [0, 0, 0, 0]])
# center...
>>> [[0 0 0 0]
[0 1 1 0]
[0 2 4 0]
[0 0 0 0]]
但实际上我需要居中的数组要大得多(比如 200x200、403x403 等,它们都是方形的)。我认为np.nonzero 和np.roll 可能会派上用场,但我不确定将它们用于我的大型阵列的最佳方式。
【问题讨论】:
-
你如何定义处于中心位置?
-
@Tai 我想理想情况下我想将图像质心的坐标设置为等于原点(假设我已经有了质心的坐标)。
-
您是否已经想出了解决较小矩阵的方法?如果是这样,你应该与人分享。此外,更多示例将对人们有所帮助。
-
还没有。我说我已经有了质心坐标的原因是因为我正在使用
astropy包photutils,它具有返回图像中对象质心坐标的功能。 -
行是独立的吗?从您提供的示例中,似乎该行首先一个一个居中,然后 bloc [[1 1][2 4]] 垂直居中...
标签: python arrays python-3.x numpy