【问题标题】:How to use broadcast to sum two different shape arrays如何使用广播对两个不同的形状数组求和
【发布时间】:2020-07-23 16:52:11
【问题描述】:

我有两个数组,想使用 numpy 广播对它们求和。这是第一个数组:

[4 6 2 1]

第二个:

[[ 5  4  56  45]
 [ 10  7  88  120]
 [69 9 70 1]]

如何使用 numpy 广播对这两个数组求和?感谢您的帮助

更新

a = np.array(a)
A = np.array(A)

G = a + A

结果:

ValueError                                Traceback (most recent call last)
<ipython-input-47-4fac93342c82> in <module>()
      5 A = np.array(A)
      6 
----> 7 G = a + A
      8 #print(G)

ValueError: operands could not be broadcast together with shapes (4,) (3, 4) 

【问题讨论】:

  • 我们不知道您期望什么输出。数组也不是很友好的复制/粘贴
  • 我想改变向量 a 的形状以便广播发生
  • 我可以对这两个数组求和
  • a+b 应该同时广播它们,因为形状是兼容的。你试过吗?
  • 我做到了,但它抛出了这个错误:ValueError:操作数无法与形状(4,)(4,6)一起广播

标签: python arrays numpy matrix


【解决方案1】:

大概是这样的:

import numpy as np

A = np.array([4, 6, 2, 1])
B = np.array([[ 5,  4,  56,  45],
 [ 10,  7,  88,  120],
 [69, 9, 70, 1]])

C = A + B
print(C)
>>> [[  9  10  58  46]
     [ 14  13  90 121]
     [ 73  15  72   2]]

你不需要改变形状,numpy 它们已经可以广播了。你有A.shape = (4,)B.shape = (3, 4)。所以numpy会广播到B的第一维。

【讨论】:

  • 我确实这样做了,但它抛出了这个错误:ValueError:操作数无法与形状(4,)(4,6)一起广播
  • 你的输入数组不是 (4,6) @MilhouseVanHouten ...
  • 我的错,是 (3,4)
  • ValueError: 操作数无法与形状 (4,) (3,4) 一起广播
  • 你确定你没有复制错误,甚至没有漏掉一个逗号?如果我复制粘贴它,我会得到完全相同的结果。
猜你喜欢
  • 1970-01-01
  • 2019-04-22
  • 2019-12-03
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
相关资源
最近更新 更多