python - `numpy.dot` 中的数组顺序

标签 python numpy

在 Python 的 numerical library 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 优化的点导入错误有关,该错误被捕获并以静默方式处理(此代码片段来自 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

关于python - `numpy.dot` 中的数组顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061720/

相关文章:

python - 如何使用Python计算最近三个非nan值的平均值

python - numpy Python 中 (n,n,M) 和 (n,n) 矩阵的矩阵乘法

python - 如何在不等待python中的while循环的情况下一一播放声音?

python - Tensorflow - 正确(本地?)处理多个时期的数据批处理重叠(小批量?)

python - OpenCV Python : cv2. VideoCapture 只能找到 3 个摄像头中的 2 个,Windows Camera 应用程序找到所有

python - 使用 pip 时如何设置 distutils 使用的日志级别?

python - 从 NumPy ndarray 中选择行

python - 从文件打开 tensorflow 图

python - 将 NumPy 数组的指定元素转换为新值

python - 如何使用 Pandas 选择所有非 NaN 列和非 NaN 最后一列?