`numpy.dot`中的数组顺序

Rad*_*dim 15 python numpy

在Python的数值库NumPy中,该numpy.dot函数如何处理不同内存顺序的数组?numpy.dot(c-order, f-order)与... dot(f-order, c-order)

我想问的原因是,很久以前(numpy的1.0.4?),我做了一些测试,发现numpy.dot比调用表现糟糕dgemmscipy.linalg直接,用正确的换位标志,虽然双方在内部调用相同的BLAS库.(我怀疑原因是复制内部的输入矩阵numpy.dot,如果输入很大,这是很悲惨的.)

现在我再次尝试并且实际numpy.dot执行相同dgemm,因此没有理由按特定顺序保持数组并手动设置转置标志.更干净的代码.

所以我的问题是,最近(让我们说1.6.0)numpy.dot工作如何保证什么时候被复制?什么时候复制?我关心的是1)记忆2)这里的表现.干杯.

wim*_*wim 1

您所看到的可能与捕获并静默处理的 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)