import numpy as np
w = np.array(range(15)).reshape(3,5)
b = np.array(range(5))
c = b.reshape(1,b.shape[0])
print w.shape,b.shape, c.shape
#(3, 5) (5,) (1, 5)
a = w -b
d = w -c
print a, a.shape
"""
[[ 0 0 0 0 0]
[ 5 5 5 5 5]
[10 10 10 10 10]] (3, 5)
"""
print d, d.shape
"""
[[ 0 0 0 0 0]
[ 5 5 5 5 5]
[10 10 10 10 10]] (3, 5)
"""
#b += c
#ValueError: non-broadcastable output operand with shape (5,) doesn't match the broadcast shape (1,5)
c += b
print c, c.shape
#[[0 2 4 6 8]] (1, 5)
可以看见b(5,)可以向c(1,5)或其他(n,5)传播,这个传播是单向的这个也有点意思 https://stackoverflow.com/questions/32109319/how-to-implement-the-relu-function-in-numpy
本文通过实例演示了如何使用NumPy进行数组操作,并详细解析了广播机制的工作原理。展示了不同形状数组间的运算过程,以及如何避免维度不匹配的错误。
6025

被折叠的 条评论
为什么被折叠?



