【发布时间】:2020-12-06 01:49:43
【问题描述】:
我正在尝试生成一个满足以下条件的 3 维数组:
- 对于每个子二维数组,它们各自的行和列的总和必须小于 1;
- 对于这些相同的子 2D 数组,它们的所有组件中的一些也必须小于 1;
- 每个元素都必须小于 1。
例如,考虑一个 2x2x2 数组。那么这两个 2x2 数组(我称之为子数组)必须满足上面的两个条件。
我尝试使用拒绝方法解决这个问题,例如:
while done == False:
array = np.random.randint(0, 100, size=(2,2,2))*(1/100)
c1 = condition1(array) # returns True is condition 1 is satisfied
c2 = condition2(array) # returns True is condition 2 is satisfied
if c1 == True and c2 == True:
done = True
这样做的问题是找到解决方案需要太多时间,我需要用 4 维和 5 维数组重复这个过程。另外,稍后我将对这个问题添加另一个约束,但一次只有一件事!
【问题讨论】:
-
如果组件是指矩阵元素并且矩阵中的值实际上都是正数,正如您的示例代码所暗示的那样,那么条件 2 就足以保证条件一和三。
标签: python arrays python-3.x algorithm optimization