min*_*ang 2 python performance numpy
在我看来有两个版本的numpy函数multiply():
c = multiply( a, b )multiply(a, b, c )我的问题有两个:
dot()功能,我知道c = dot( a, b)工作.但dot(a, b, c)事实并非如此.两个版本之间的区别multiply():
c = multilpy(a, b)
Run Code Online (Sandbox Code Playgroud)
将数组a和b元素相乘,创建一个新数组作为结果.该名称c绑定到此新数组.如果之前c指向不同的数组,则可能会或可能不会触发c之前指向的数组的垃圾回收,具体取决于是否仍存在对此数组的其他引用.
multilpy(a, b, c)
Run Code Online (Sandbox Code Playgroud)
将数组a与b元素相乘,将结果存储在现有数组中c(必须具有合适的维度).没有创建新的数组对象,而是更改现有的数组.除了不同的语义之外,如果c已经指向具有合适类型和维度的数组,则此变体更快,因为没有分配新数组.此变体还可以减少内存使用量.
实际上不是一个问题.是的,dot()没有三参数形式.它不是一个ufunc并且不遵循通常的广播规则 - 它不能因为点积的语义.
编辑:从NumPy 1.6开始,dot()实际上确实有一个具有类似语义的三参数形式,如上所述.(对于它的价值,它仍然不是一个ufunc.)