【问题标题】:Array with numbers adding up to value数字加起来等于值的数组
【发布时间】:2022-01-13 01:40:37
【问题描述】:

我需要为一个实验过程(矩阵 10 任务)设置一个 for 循环,其中我需要显示 150 个 4x4 矩阵数组,其中至少 2 个数字加起来为 10 或 5。它应该如下所示.现在我知道如何创建一个矩阵和相应的 for 循环,但是有没有办法确保在数组中指定数量的数字加起来等于一个值,即 10?

[[1.69 1.82 2.91]

[4.67 4.81 3.05]

[5.82 5.06 4.28]

[6.36 5.19 4.57]]

谢谢

【问题讨论】:

  • 选择一个介于 0 和 10 之间的随机数。然后从 10 中减去该数。现在您有 2 个数相加为 10。将它们放在矩阵中的随机位置。
  • 谢谢@Barmar,这是有道理的!但是,如何在没有条件的情况下随机替换矩阵中的数字?
  • “无条件”是什么意思?选择一个随机的行和列,并分配给该元素。

标签: python arrays numpy sum


【解决方案1】:

我假设您正在使用 numpy 创建您的数组

对于必须定义数组的方式,您有什么特别的附加规则吗?

创建这样一个数组的简单方法是:

import numpy as np
x = np.zeros((4, 4))
x[0,0] = 10

这个数组确实符合你的定义

现在,如果您想让它更加随机,最好的方法是随机生成您希望您的一对特定数字出现的索引。我将通过重塑一个 16x1 数组来做到这一点,因为我很懒,而且我更喜欢处理 1D 事物

import numpy as np

i,j = np.random.choice(np.arange(16), size=2, replace=False) # Generates two random indices

x = np.random.uniform(low=0, high=10, size=16) # Generates a random array

x[i] = 10-x[j] # Does the trick

x = np.reshape(x, (4, 4)) # Reshapes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多