2017-06-22 69 views
1

我正在使用多维矩阵(约100尺寸左右,见下文为什么)。我的矩阵是NumPy数组,我主要将它们相乘。矢量化的限制是什么?

NumPy以什么形式照顾(关于速度或准确性),我要求它将这些矩阵相乘?即在执行乘法之前将它们重新整形为线性阵列是否有意义?我用随机矩阵做了一些自己的测试,似乎并不相关,但想对此有一些理论上的了解。

我猜在Python处理它们缓慢之前,对于矩阵的大小有多大以及它们有多大是有限制的。有没有办法找到这个限制?


我有几个物种(生物学),并希望分配这些物种的每一个健身。然后我想看看这些不同的企业如何影响竞争的结果。我想检查所有物种的所有可能的健身组合。我的矩阵有很多维度,但所有维度都很小。

+0

你是指什么样的乘法? –

+0

正常乘法'a * b'。 a'和'b'具有什么形状(只要它们具有相同的形状)有什么关系? –

+1

应该注意的是,NumPy在编译的C或C++代码中执行这些操作(或者甚至调用Fortran数字库(?)),所以它不会是“Python”**,它会变慢或变慢。 (但是,由于计算仍然在Python进程和线程中发生,当然这仍然是您感觉到的地方)。 –

回答

4

对于元素乘法它并不重要,,平坦的阵列不会改变的事情。请记住:不管它们的尺寸如何,数组都会线性保存在RAM中。如果在乘法之前将数组拉平,则只会改变NumPy向您显示数据的方式,RAM中的数据永远不会被触摸。乘以1D或100D数据的操作完全相同。