python - Numpy 广播

标签 python numpy broadcasting array-broadcasting

当我在 Numpy 中进行此操作时会发生什么?

a = np.ones([500,1])
b = np.ones([5000,])/2
c = a + b 

# a.shape (500,1)
# b.shape (5000, )
# c.shape (500, 5000)

我很难弄清楚这个广播中到底发生了什么。

最佳答案

Numpy 假设一维数组为行向量,因此求和确实在形状 (500, 1) 和 (1, 5000) 之间,这导致了矩阵求和。

由于这不是很清楚,您应该明确扩展您的维度:

>>> np.arange(5)[:, None] + np.arange(8)[None, :]
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 1,  2,  3,  4,  5,  6,  7,  8],
       [ 2,  3,  4,  5,  6,  7,  8,  9],
       [ 3,  4,  5,  6,  7,  8,  9, 10],
       [ 4,  5,  6,  7,  8,  9, 10, 11]])

关于python - Numpy 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304313/

相关文章:

python - 运行一个脚本,该脚本调用另一个脚本作为参数,而该脚本又具有参数

python - 预处理、重采样和管道 - 以及两者之间的错误

Python:如何格式化循环以提取字典列表中的特定值?

python - 如何使用python将阿拉伯语文本存储在mysql数据库中?

python - 如何更改matplotlib annotate中的箭头样式?

Python 选择有条件的元组

使用 map 从类方法调用 NumPy 时出现 Python 错误

java - 多客户端广播中的 MulticastSocket 与 DatagramSocket

events - Flutter - 每次页面更改时运行一个函数

python - 关于 np.tile 和 numpy 广播的困惑