【发布时间】:2020-02-09 06:53:37
【问题描述】:
我正在试图弄清楚如何在 numpy 这种情况下订购:
首先我创建了带有两个 for 循环的图像块(仅作为示例):
cuts = 9 # This is for example, there could be much more blocks
for row in range(cuts):
for column in range(cuts):
block_min_x = (1 / cuts) * row
block_max_x = (1 / cuts) * (row + 1)
block_min_y = (1 / cuts) * column
block_max_y = (1 / cuts) * (column + 1)
然后我将这些“图像块”按顺序添加到名称为 "img_1_1, img_1_2, img_1_3, img_2_1, img_2_2, img_2_3..." 的数组中。所以它在数组中看起来像这样(数字示例):
[6,7,8] [15,16,17] [24,25,26]
[3,4,5] [12,13,14] [21,22,23]
[0,1,2] [9,10,11] [18,19,20]
是否有某种方法可以使用 numpy 来命令这些块像这样:
[0,1,2] [3,4,5] [6,7,8]
[9,10,11] [12,13,14] [15,16,17]
[18,19,20] [21,22,23] [24,25,26]
这里的图片可以更好地展示我正在寻找的东西:
我不确定这种问题是否有某种术语,所以抱歉不能使用正确的术语。问题似乎是我们需要“顺时针旋转”,如您在示例图像中的蓝线中看到的那样。所以问题是,如何在 numpy 中订购它?此外,如果它可以在那些 for 循环中发生变化,我很高兴知道。
【问题讨论】:
-
rot90是你应该使用的,因为它更具可读性,但值得意识到你可以使用a[::-1].T进行旋转,即“垂直翻转然后对角翻转”.
标签: python arrays numpy sorting