如何在Python中广播列表?

How to broadcast a list in Python?

我需要将 Python 中的列表广播到更大的值。我实际上正在研究一种不使用 Numpy 的反向传播算法。我在有限的开发环境中也无法访问它。

根据我的理解,当您对两个数组使用 Numpy.dot() 操作时,如果一个数组小于另一个数组,则 numpy 将广播一个数组,因此它们的大小相等。

   dW = np.dot(dZ, A_prev.T) / m 

当两个数组不可整除时,Numpy 如何处理广播数组?即当两个数组的模不等于0时?

就我而言,我有两个列表; len(dZ) 也等于 512,len(A_prev) 也等于 741。我应该如何处理广播 dZ,使其大小与 A_prev 相同?

到目前为止我尝试过的是:

dZ = dZ * (len(dZ) + (len(A_prev) % len(dZ)))

然而,dZ 是一个巨大的数字,大约有 16,000。我不知道为什么。

你可以试试这些:

假设 dz 是一个长度为 3 的数组:

dz = [4,2,8]

和A_prev是11项数组:

A_prev  = [0]*11

比将 dz 广播到 A_prev 的长度,这样做:

dz = dz* (len(A_prev)//len(dz)) 
dz = dz + dz[:len(A_prev)-len(dz)] 

现在 dz 是一个 11 项数组:

[4, 2, 8, 4, 2, 8, 4, 2, 8, 4, 2]

我认为您应该手动执行此操作并创建一个具有正确维度的新数组。 Python 的座右铭毕竟是明确的比含蓄的要好。 https://www.python.org/dev/peps/pep-0020/ Numpy 使用 C 后端并且有很多技巧来优化表达式,因此您可以忽略很多技术细节。 同样,为不同类型的数据重用变量名是令人困惑和不好的做法。