Foo*_*Bar 4 python numpy scipy
说我有两个对象X,Y形状k,1,n和k,m,n.我知道X当我进行诸如此类的操作时,numpy会自动沿第一维扩展/重复X + Y.这种魔法是否适用于numpy支持/包含的所有数学运算?
例如,我可以做到scipy.special.binom(X,Y)并获得预期的结果吗?我尝试了一些特殊功能,但没有收到错误.没有收到错误让我得出结论广播是否正确完成?
numpy确实为所有运营商应用广播,例如.*+ - /等.它也适用于ufunc功能.这是ufunc定义的一部分.
scipy.special.binom是,根据其文件a ufunc.它被编译,所以我无法查看代码来验证这一点,但我可以做一些简单的测试:
In [379]: special.binom([1,2,3],[[1],[2]])
Out[379]:
array([[ 1., 2., 3.],
[ 0., 1., 3.]])
In [380]: special.binom([1,2,3,4],[[1],[2]])
Out[380]:
array([[ 1., 2., 3., 4.],
[ 0., 1., 3., 6.]])
In [385]: special.binom(np.arange(6).reshape(3,2,1),np.arange(6).reshape(3,1,2)).shape
Out[385]: (3, 2, 2)
Run Code Online (Sandbox Code Playgroud)
(2,3)和(2,4)输出尺寸与广播输入相匹配.这与广播一致.
np.dot是numpy广播不适用的功能示例.