[英]Array order in `numpy.dot`
在Python的数值库NumPy中 , numpy.dot
函数如何处理不同内存顺序的数组? numpy.dot(c-order, f-order)
与dot(f-order, c-order)
等。
我问的原因是很久以前(numpy 1.0.4?),我做了一些测试,并注意到numpy.dot
表现比直接从scipy.linalg
调用dgemm
更糟,带有正确的换位标志,尽管它们都调用相同的BLAS库内部。 (我怀疑原因是在numpy.dot
复制输入矩阵,如果输入很大,这是很悲惨的。)
现在我再次尝试并且实际上numpy.dot
执行与dgemm
相同的dgemm
,因此没有理由按特定顺序保持数组并手动设置转置标志。 更干净的代码。
所以我的问题是,最近(让我们说1.6.0) numpy.dot
工作,保证什么时候复制,什么时候不复制? 我关心的是1)记忆2)这里的表现。 干杯。
您可能看到的可能是与静默捕获和处理的blas优化点导入错误相关(此代码段来自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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.