numpy广播*all*的所有功能?

Foo*_*Bar 4 python numpy scipy

说我有两个对象X,Y形状k,1,nk,m,n.我知道X当我进行诸如此类的操作时,numpy会自动沿第一维扩展/重复X + Y.这种魔法是否适用于numpy支持/包含的所有数学运算?

例如,我可以做到scipy.special.binom(X,Y)并获得预期的结果吗?我尝试了一些特殊功能,但没有收到错误.没有收到错误让我得出结论广播是否正确完成?

hpa*_*ulj 6

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.dotnumpy广播不适用的功能示例.