python - 使用条件在另一个 numpy 数组中组织数组
问题描述
我有一个带有坐标的 numpy 数组,如下所示:
a = [[213, 290], [213, 291], [213, 292], [213, 293], [213, 294], [213, 323], [213, 324], [213, 325], [213, 326], [213, 327], [223, 309], [223, 310], [223, 311], [289, 308], [289, 309], [289, 330], [289, 331], [290, 312], [290, 313], [290, 314], [290, 315], [290, 330], [290, 331], [290, 332], [290, 333], [342, 316], [342, 317], [342, 318], [342, 319], [342, 320], [343, 312], [343, 313], [343, 314], [343, 315], [352, 292], [353, 292], [354, 292], [355, 292], [356, 292], [357, 292], [357, 293], [357, 294], [357, 295], [357, 296], [357, 297], [385, 292], [385, 293], [385, 294], [385, 296], [386, 291], [386, 292], [386, 293], [386, 294], [387, 292], [387, 293]]
a = np.array([np.array(e) for e in a]) #the thing that i actually get in my script
b
是一个新数组,其中包含每个唯一 Y(坐标的第一个数字)的数组,并且这些数组包含具有 YX 坐标的数组,但如果 X 不是 x=x+1 ,则使用新的 x 顺序创建另一个数组。
这个循环可以解决问题,但我正在寻找一种更优雅也不是 numpy'ish 的方法:
previous_Y = None
previous_X = None
b = []
for yx in a:
y, x = yx
if y == previous_Y:
if previous_X != None and x == previous_X+1:
b[-1][-1].append(yx)
else:
b[-1].append([yx])
else:
b.append([[yx]])
LY, LX = yx
输出:
b = [[(213, 290), (213, 291), (213, 292), (213, 293), (213, 294)], [(213, 323), (213, 324), (213, 325), (213, 326), (213, 327)]],
[[(223, 309), (223, 310), (223, 311)]],
[[(289, 308), (289, 309)], [(289, 330), (289, 331)]],
[[(290, 312), (290, 313), (290, 314), (290, 315)], [(290, 330), (290, 331), (290, 332), (290, 333)]],
[[(342, 316), (342, 317), (342, 318), (342, 319), (342, 320)]],
[[(343, 312), (343, 313), (343, 314), (343, 315)]],
[[(352, 292)]],
[[(353, 292)]],
[[(354, 292)]],
[[(355, 292)]],
[[(356, 292)]],
[[(357, 292), (357, 293), (357, 294), (357, 295), (357, 296), (357, 297)]],
[[(385, 292), (385, 293), (385, 294)], [(385, 296)]],
[[(386, 291), (386, 292), (386, 293), (386, 294)]],
[[(387, 292), (387, 293)]]
解决方案
推荐阅读
- ruby-on-rails - 使用 .map 函数创建哈希
- java - 我无法从 A2DP 移动设备发送元数据,但 Google Play 音乐如何将元数据发送到该设备?
- ember.js - 如何在 ember.js v3.8 中渲染子组件?
- c++ - 有没有办法避免这个函数中的分支/条件逻辑?
- c++ - 如何解决头文件中的变量冲突?
- c++11 - 在被调用的构造函数中使用递归
- php - 如果值位于由另一个表组成的数组中,如何使用 PHP 和 PDO 在 MySQL 中更快地插入多行(~70k)?
- javascript - 如果他没有从选择框-PHP 中选择值,如何限制用户提交表单
- verilog - 以不同的时钟将数据写入内存
- bixby - 如何使用 Bixby 视图创建水平跨越单元格?