2017-06-22 123 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數據的操作完全相同。