【发布时间】:2023-03-16 08:00:02
【问题描述】:
我有一个这样的 numpy 数组:
[[1, 2], [1, 3], [2, 1], [2, 2], [2, 3], ...]
我想三乘三得到所有“子”数组(即 [X, Y])的组合:
[[1, 1] [1, 1] [1, 1],
[1, 1] [1, 1] [1, 2],
[1, 1] [1, 1] [1, 3],
...
[5, 5] [5, 5], [5, 4],
[5, 5] [5, 5], [5, 5]]
然后,我需要对每个组合应用条件:
X1, X2, X3 > 0X1+Y1 <= X2X2+Y2 <= X3[X1, Y1] =! [X2, Y2][X2, Y2] =! [X3, Y3]...
由于组合数量众多,我绝对需要避免 for 循环。
知道如何在有效的执行时间内完成这项工作吗?
我当前的带有 for 循环和 if 语句的代码:
mylist 对象类似于 [[1, 1], [1, 2], [2, 1], ...](即列表列表,如 [X, Y])。
组合 = [] 留在我的列表中:
if left[0] > 0:
for center in mylist:
if (center[0] > 0
and center[0] >= left[0] + left[1]
and center[1] / left[1] < 2
and center[0] / left[0] < 2
and left[1] / center[1] < 2
and left[0] / center[1] < 2
and str(left[0]) + "y" + str(left[1]) + "y" != str(center[0]) + "y" + str(center[1]) + "y"
):
for right in mylist:
if (right[0] > 0
and right[0] >= center[0] + center[1]
and right[1] / center[1] < 2
and right[0] / center[0] < 2
and center[1] / right[1] < 2
and center[0] / right[0] < 2
and str(right[0]) + "y" + str(right[1]) + "y" != str(center[0]) + "y" + str(center[1]) + "y"
):
Combination.append([[left[0], left[1]], [center[0], center[1]], [right[0], right[1]])
【问题讨论】:
-
到目前为止你写过什么代码吗?
-
我编辑了我的帖子以添加带有 for 循环和 if 语句的原始代码。