【问题标题】:Can i simplify this creation of an array?我可以简化这个数组的创建吗?
【发布时间】:2021-02-22 22:56:39
【问题描述】:

我需要在 python 中使用 numpy 创建一个这样的数组:

这是我目前的尝试:

array = np.zeros([3, 3])

array[0, 0] = 1
array[0, 1] = 2
array[0, 2] = 3

array[1, 0] = 2
array[1, 1] = 4
array[1, 2] = 6

array[2, 0] = 3
array[2, 1] = 6
array[2, 2] = 9

print(array)

有没有办法简化这个,我很确定有。但是,我不知道如何。 :(

【问题讨论】:

    标签: arrays python-3.x numpy


    【解决方案1】:

    肯定 :) 一个简单的选择:

    arr = np.arange(1,4)
    my_arr = np.vstack((arr, 2*arr, 3*arr))
    

    或者你可以使用广播。 Broadcasting 功能强大且简单明了,但如果您不阅读文档,可能会感到困惑。在这种情况下,您创建一个 (1x3) 数组,一个 (3x1) 数组,然后将它们相乘并使用广播生成一个 (3x3):

    my_arr = np.arange(1,4) * np.array([1,2,3]).reshape(-1,1)
    

    输出:

    array([[1, 2, 3],
           [2, 4, 6],
           [3, 6, 9]])
    

    【讨论】:

    • 非常感谢!
    【解决方案2】:

    您不必创建一个充满零的数组然后单独分配每个元素,您可以将列表文字传递给np.array

    np.array([[1, 2, 3],
              [2, 4, 6],
              [3, 6, 9]])
    

    【讨论】:

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