【问题标题】:Adding (2,) and (2, 1) arrays in Numpy在 Numpy 中添加 (2,) 和 (2, 1) 数组
【发布时间】:2021-02-16 06:33:45
【问题描述】:

我正在尝试添加形状为 (2,) 和 (2, 1) 的数组,但它不起作用。示例:

np.array([0, 1]).T + np.array([[0], [1]])

输出: array([[0, 1], [1, 2]])

预期输出: array([[0], [2]])

我尝试过重塑和切片,但它们都不适合我... 我怎样才能达到预期的效果?

【问题讨论】:

  • 显示什么不起作用。一个简单的切片应该可以做到
  • 用 (2,1) 广播 (2,) 会产生 (2,2)。如果您想要 (2,1) 结果,请将第一个结果转换为 (2,1) 。广播会将 (2,) 扩展到 (1,2)。
  • numpy 使用的广播规则可能难以猜测但并不复杂。该文档实际上非常好,您可以在这里阅读:numpy.org/doc/stable/user/basics.broadcasting.html

标签: python numpy numpy-ndarray


【解决方案1】:

你可以这样做:

np.array([0, 1])[:,None] + np.array([[0], [1]])

【讨论】:

    【解决方案2】:

    试试这个:

    np.array([0, 1]).T.reshape(2, 1) + np.array([[0], [1]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多