在Python的数值库NumPy中,该numpy.dot
函数如何处理不同内存顺序的数组?numpy.dot(c-order, f-order)
与... dot(f-order, c-order)
等
我想问的原因是,很久以前(numpy的1.0.4?),我做了一些测试,发现numpy.dot
比调用表现糟糕dgemm
的scipy.linalg
直接,用正确的换位标志,虽然双方在内部调用相同的BLAS库.(我怀疑原因是复制内部的输入矩阵numpy.dot
,如果输入很大,这是很悲惨的.)
现在我再次尝试并且实际numpy.dot
执行相同dgemm
,因此没有理由按特定顺序保持数组并手动设置转置标志.更干净的代码.
所以我的问题是,最近(让我们说1.6.0)numpy.dot
工作如何保证什么时候被复制?什么时候复制?我关心的是1)记忆2)这里的表现.干杯.
您所看到的可能与捕获并静默处理的 blas-optimized 点导入错误有关(此代码片段来自 numeric.py)
# try to import blas optimized dot if available
try:
# importing this changes the dot function for basic 4 types
# to blas-optimized versions.
from _dotblas import dot, vdot, inner, alterdot, restoredot
except ImportError:
# docstrings are in add_newdocs.py
inner = multiarray.inner
dot = multiarray.dot
Run Code Online (Sandbox Code Playgroud)